1
1
package datadog .trace .core .propagation ;
2
2
3
- import datadog .trace .api .Config ;
4
- import datadog .trace .api .TracePropagationStyle ;
5
3
import datadog .trace .bootstrap .instrumentation .api .AgentPropagation ;
6
4
import datadog .trace .bootstrap .instrumentation .api .AgentSpan ;
7
- import datadog .trace .bootstrap .instrumentation .api .AgentSpanContext ;
8
- import datadog .trace .core .DDSpanContext ;
9
5
import datadog .trace .core .datastreams .DataStreamContextInjector ;
10
6
import java .util .LinkedHashMap ;
11
- import java .util .Map ;
12
7
13
8
public class CorePropagation implements AgentPropagation {
14
- private final HttpCodec .Injector injector ;
15
- private final Map <TracePropagationStyle , HttpCodec .Injector > injectors ;
16
9
private final DataStreamContextInjector dataStreamContextInjector ;
17
- private final HttpCodec .Extractor extractor ;
18
10
19
11
/**
20
12
* Constructor
21
13
*
22
- * @param extractor The context extractor.
23
- * @param defaultInjector The default injector when no {@link TracePropagationStyle} given.
24
- * @param injectors All the other injectors available for context injection.
25
14
* @param dataStreamContextInjector The DSM context injector, as a specific object until generic
26
15
* context injection is available.
27
16
*/
28
- public CorePropagation (
29
- HttpCodec .Extractor extractor ,
30
- HttpCodec .Injector defaultInjector ,
31
- Map <TracePropagationStyle , HttpCodec .Injector > injectors ,
32
- DataStreamContextInjector dataStreamContextInjector ) {
33
- this .extractor = extractor ;
34
- this .injector = defaultInjector ;
35
- this .injectors = injectors ;
17
+ public CorePropagation (DataStreamContextInjector dataStreamContextInjector ) {
36
18
this .dataStreamContextInjector = dataStreamContextInjector ;
37
19
}
38
20
39
- @ Override
40
- public <C > void inject (final AgentSpan span , final C carrier , final Setter <C > setter ) {
41
- inject (span .context (), carrier , setter , null );
42
- }
43
-
44
- @ Override
45
- public <C > void inject (AgentSpanContext context , C carrier , Setter <C > setter ) {
46
- inject (context , carrier , setter , null );
47
- }
48
-
49
- @ Override
50
- public <C > void inject (AgentSpan span , C carrier , Setter <C > setter , TracePropagationStyle style ) {
51
- inject (span .context (), carrier , setter , style );
52
- }
53
-
54
- private <C > void inject (
55
- AgentSpanContext context , C carrier , Setter <C > setter , TracePropagationStyle style ) {
56
- if (!(context instanceof DDSpanContext )) {
57
- return ;
58
- }
59
-
60
- final DDSpanContext ddSpanContext = (DDSpanContext ) context ;
61
- ddSpanContext .getTraceCollector ().setSamplingPriorityIfNecessary ();
62
-
63
- /**
64
- * If the experimental appsec standalone feature is enabled and appsec propagation is disabled
65
- * (no ASM events), stop propagation
66
- */
67
- if (Config .get ().isAppSecStandaloneEnabled ()
68
- && !ddSpanContext .getPropagationTags ().isAppsecPropagationEnabled ()) {
69
- return ;
70
- }
71
-
72
- if (null == style ) {
73
- injector .inject (ddSpanContext , carrier , setter );
74
- } else {
75
- injectors .get (style ).inject (ddSpanContext , carrier , setter );
76
- }
77
- }
78
-
79
21
@ Override
80
22
public <C > void injectPathwayContext (
81
23
AgentSpan span , C carrier , Setter <C > setter , LinkedHashMap <String , String > sortedTags ) {
@@ -100,9 +42,4 @@ public <C> void injectPathwayContextWithoutSendingStats(
100
42
this .dataStreamContextInjector .injectPathwayContextWithoutSendingStats (
101
43
span , carrier , setter , sortedTags );
102
44
}
103
-
104
- @ Override
105
- public <C > AgentSpanContext .Extracted extract (final C carrier , final ContextVisitor <C > getter ) {
106
- return extractor .extract (carrier , getter );
107
- }
108
45
}
0 commit comments