11package datadog .trace .core .propagation ;
22
3- import datadog .trace .api .Config ;
4- import datadog .trace .api .TracePropagationStyle ;
53import datadog .trace .bootstrap .instrumentation .api .AgentPropagation ;
64import datadog .trace .bootstrap .instrumentation .api .AgentSpan ;
7- import datadog .trace .bootstrap .instrumentation .api .AgentSpanContext ;
8- import datadog .trace .core .DDSpanContext ;
95import datadog .trace .core .datastreams .DataStreamContextInjector ;
106import java .util .LinkedHashMap ;
11- import java .util .Map ;
127
138public class CorePropagation implements AgentPropagation {
14- private final HttpCodec .Injector injector ;
15- private final Map <TracePropagationStyle , HttpCodec .Injector > injectors ;
169 private final DataStreamContextInjector dataStreamContextInjector ;
17- private final HttpCodec .Extractor extractor ;
1810
1911 /**
2012 * Constructor
2113 *
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.
2514 * @param dataStreamContextInjector The DSM context injector, as a specific object until generic
2615 * context injection is available.
2716 */
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 ) {
3618 this .dataStreamContextInjector = dataStreamContextInjector ;
3719 }
3820
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-
7921 @ Override
8022 public <C > void injectPathwayContext (
8123 AgentSpan span , C carrier , Setter <C > setter , LinkedHashMap <String , String > sortedTags ) {
@@ -100,9 +42,4 @@ public <C> void injectPathwayContextWithoutSendingStats(
10042 this .dataStreamContextInjector .injectPathwayContextWithoutSendingStats (
10143 span , carrier , setter , sortedTags );
10244 }
103-
104- @ Override
105- public <C > AgentSpanContext .Extracted extract (final C carrier , final ContextVisitor <C > getter ) {
106- return extractor .extract (carrier , getter );
107- }
10845}
0 commit comments