1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
|
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
using System;
using System.Collections.Generic;
namespace Ice
{
namespace retry
{
public class Instrumentation
{
static object mutex = new object();
class InvocationObserverI : Ice.Instrumentation.InvocationObserver
{
public void
attach()
{
}
public void
detach()
{
lock(mutex)
{
++nInvocation;
}
}
public void
failed(string msg)
{
lock(mutex)
{
++nFailure;
}
}
public void
retried()
{
lock(mutex)
{
++nRetry;
}
}
public void
userException()
{
}
public Ice.Instrumentation.RemoteObserver
getRemoteObserver(Ice.ConnectionInfo ci, Ice.Endpoint ei, int i, int j)
{
return null;
}
public Ice.Instrumentation.CollocatedObserver
getCollocatedObserver(Ice.ObjectAdapter adapter, int i, int j)
{
return null;
}
};
static private Ice.Instrumentation.InvocationObserver invocationObserver = new InvocationObserverI();
class CommunicatorObserverI : Ice.Instrumentation.CommunicatorObserver
{
public Ice.Instrumentation.Observer
getConnectionEstablishmentObserver(Ice.Endpoint e, string s)
{
return null;
}
public Ice.Instrumentation.Observer
getEndpointLookupObserver(Ice.Endpoint e)
{
return null;
}
public Ice.Instrumentation.ConnectionObserver
getConnectionObserver(Ice.ConnectionInfo ci,
Ice.Endpoint ei,
Ice.Instrumentation.ConnectionState s,
Ice.Instrumentation.ConnectionObserver o)
{
return null;
}
public Ice.Instrumentation.ThreadObserver
getThreadObserver(string p,
string n,
Ice.Instrumentation.ThreadState s,
Ice.Instrumentation.ThreadObserver o)
{
return null;
}
public Ice.Instrumentation.InvocationObserver
getInvocationObserver(Ice.ObjectPrx p, string o, Dictionary<string, string> c)
{
return invocationObserver;
}
public Ice.Instrumentation.DispatchObserver
getDispatchObserver(Ice.Current c, int i)
{
return null;
}
public void
setObserverUpdater(Ice.Instrumentation.ObserverUpdater u)
{
}
};
static private Ice.Instrumentation.CommunicatorObserver communicatorObserver = new CommunicatorObserverI();
static public Ice.Instrumentation.CommunicatorObserver
getObserver()
{
return communicatorObserver;
}
static private void
testEqual(ref int value, int expected)
{
if(expected < 0)
{
value = 0;
return;
}
int retry = 0;
while(++retry < 100)
{
lock(mutex)
{
if(value == expected)
{
break;
}
}
System.Threading.Thread.Sleep(10);
}
if(value != expected)
{
System.Console.Error.WriteLine("value = " + value + ", expected = " + expected);
System.Diagnostics.Debug.Assert(false);
throw new System.Exception();
}
value = 0;
}
static public void
testRetryCount(int expected)
{
testEqual(ref nRetry, expected);
}
static public void
testFailureCount(int expected)
{
testEqual(ref nFailure, expected);
}
static public void
testInvocationCount(int expected)
{
testEqual(ref nInvocation, expected);
}
static public void
testInvocationReset()
{
nRetry = 0;
nFailure = 0;
nInvocation = 0;
}
static private int nRetry = 0;
static private int nFailure = 0;
static private int nInvocation = 0;
}
}
}
|