blob: b581cb1723c5359d8df3f6ba94c34e5b3b63052d (
plain)
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
|
// **********************************************************************
//
// Copyright (c) 2003-2012 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
package IceMX;
public class InvocationObserverI extends Observer<InvocationMetrics> implements Ice.Instrumentation.InvocationObserver
{
static private final class RemoteInvocationHelper extends MetricsHelper<Metrics>
{
static private final AttributeResolver _attributes = new AttributeResolver()
{
{
try
{
Class<?> cl = RemoteInvocationHelper.class;
add("parent", cl.getDeclaredMethod("getParent"));
add("id", cl.getDeclaredMethod("getId"));
add("endpoint", cl.getDeclaredMethod("getEndpoint"));
CommunicatorObserverI.addConnectionAttributes(this, RemoteInvocationHelper.class);
}
catch(Exception ex)
{
ex.printStackTrace();
assert(false);
}
}
};
RemoteInvocationHelper(Ice.ConnectionInfo con, Ice.Endpoint endpt)
{
super(_attributes);
_connectionInfo = con;
_endpoint = endpt;
}
String
getId()
{
if(_id == null)
{
_id = _endpoint.toString();
if(_connectionInfo.connectionId != null && !_connectionInfo.connectionId.isEmpty())
{
_id += " [" + _connectionInfo.connectionId + "]";
}
}
return _id;
}
String
getParent()
{
if(_connectionInfo.adapterName != null && !_connectionInfo.adapterName.isEmpty())
{
return _connectionInfo.adapterName;
}
else
{
return "Communicator";
}
}
Ice.ConnectionInfo
getConnectionInfo()
{
return _connectionInfo;
}
Ice.Endpoint
getEndpoint()
{
return _endpoint;
}
Ice.EndpointInfo
getEndpointInfo()
{
if(_endpointInfo == null)
{
_endpointInfo = _endpoint.getInfo();
}
return _endpointInfo;
}
final private Ice.ConnectionInfo _connectionInfo;
final private Ice.Endpoint _endpoint;
private String _id;
private Ice.EndpointInfo _endpointInfo;
};
public void
retried()
{
forEach(_incrementRetry);
}
public Observer
getRemoteObserver(Ice.ConnectionInfo con, Ice.Endpoint endpt)
{
return getObserver("Remote", new RemoteInvocationHelper(con, endpt), Metrics.class, ObserverI.class);
}
final MetricsUpdate<InvocationMetrics> _incrementRetry = new MetricsUpdate<InvocationMetrics>()
{
public void
update(InvocationMetrics v)
{
++v.retry;
}
};
}
|