-
Notifications
You must be signed in to change notification settings - Fork 713
/
SimpleServerAndClientSpanState.java
101 lines (86 loc) · 2.5 KB
/
SimpleServerAndClientSpanState.java
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
package com.github.kristofa.brave;
import com.github.kristofa.brave.internal.Util;
import com.twitter.zipkin.gen.Endpoint;
import com.twitter.zipkin.gen.Span;
import java.net.InetAddress;
/**
* {@link ServerAndClientSpanState} implementation that is used with {@link BraveContext}.
*
*/
final class SimpleServerAndClientSpanState implements ServerAndClientSpanState {
private Endpoint endpoint;
private Span currentClientSpan;
private ServerSpan currentServerSpan;
private String currentClientServiceName;
/**
* Constructor
*
* @param ip InetAddress of current host. If you don't have access to InetAddress you can use InetAddressUtilities#getLocalHostLANAddress()
* @param port port on which current process is listening.
* @param serviceName Name of the local service being traced. Should be lowercase and not <code>null</code> or empty.
*/
public SimpleServerAndClientSpanState(InetAddress ip, int port, String serviceName) {
Util.checkNotNull(ip, "ip address must be specified.");
Util.checkNotBlank(serviceName, "Service name must be specified.");
endpoint = new Endpoint(InetAddressUtilities.toInt(ip), (short) port, serviceName);
}
/**
* {@inheritDoc}
*/
@Override
public ServerSpan getCurrentServerSpan() {
return currentServerSpan;
}
/**
* {@inheritDoc}
*/
@Override
public void setCurrentServerSpan(final ServerSpan span) {
currentServerSpan = span;
}
/**
* {@inheritDoc}
*/
@Override
public Endpoint getServerEndpoint() {
return endpoint;
}
/**
* {@inheritDoc}
*/
@Override
public Span getCurrentClientSpan() {
return currentClientSpan;
}
@Override
public Endpoint getClientEndpoint() {
if(currentClientServiceName == null){
return endpoint;
} else {
Endpoint newEndpoint = new Endpoint(endpoint);
newEndpoint.setService_name(currentClientServiceName);
return newEndpoint;
}
}
/**
* {@inheritDoc}
*/
@Override
public void setCurrentClientSpan(final Span span) {
currentClientSpan = span;
}
/**
* {@inheritDoc}
*/
@Override
public void setCurrentClientServiceName(String serviceName) {
currentClientServiceName = serviceName;
}
/**
* {@inheritDoc}
*/
@Override
public Boolean sample() {
return currentServerSpan.getSample();
}
}