File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ from __future__ import absolute_import
2+
3+ import opentracing as ot
4+
5+ prefix_tracer_state = 'HTTP_X_INSTANA_'
6+ field_name_trace_id = prefix_tracer_state + 'T'
7+ field_name_span_id = prefix_tracer_state + 'S'
8+ field_count = 2
9+
10+
11+ class HTTPPropagator ():
12+ """A Propagator for Format.TEXT_MAP."""
13+
14+ def inject (self , span_context , carrier ):
15+ carrier [field_name_trace_id ] = '{0:x}' .format (span_context .trace_id )
16+ carrier [field_name_span_id ] = '{0:x}' .format (span_context .span_id )
17+
18+ def extract (self , carrier ): # noqa
19+ count = 0
20+ span_id , trace_id = (0 , 0 )
21+ for k in carrier :
22+ v = carrier [k ]
23+ k = k .lower ()
24+ if k == field_name_span_id :
25+ span_id = int (v , 16 )
26+ count += 1
27+ elif k == field_name_trace_id :
28+ trace_id = int (v , 16 )
29+ count += 1
30+
31+ if count != field_count :
32+ raise ot .SpanContextCorruptedException ()
33+
34+ return ot .SpanContext (
35+ span_id = span_id ,
36+ trace_id = trace_id ,
37+ baggage = {},
38+ sampled = True )
You can’t perform that action at this time.
0 commit comments