@@ -30,13 +30,49 @@ export class Tracer extends opentracing.Tracer {
30
30
return span ;
31
31
}
32
32
33
+ /**
34
+ * @hidden
35
+ */
36
+ protected _inject ( context : SpanContext , format : string , carrier : any ) : void {
37
+ // tslint:disable: no-unsafe-any
38
+ switch ( format ) {
39
+ case opentracing . FORMAT_TEXT_MAP :
40
+ case opentracing . FORMAT_HTTP_HEADERS :
41
+ const headerName = 'traceparent' ;
42
+ const headerValue : string = `00-${ context . traceId } -${ context . spanId } -00` ;
43
+
44
+ if ( typeof carrier . setRequestHeader === 'function' ) {
45
+ carrier . setRequestHeader ( headerName , headerValue ) ;
46
+ } else if ( carrier . headers && typeof carrier . headers . append === 'function' ) {
47
+ carrier . headers . append ( headerName , headerValue ) ;
48
+ } else {
49
+ carrier [ headerName ] = headerValue ;
50
+ }
51
+
52
+ break ;
53
+ case opentracing . FORMAT_BINARY :
54
+ break ;
55
+ default :
56
+ // We do nothing
57
+ }
58
+ // tslint:enable: no-unsafe-any
59
+ }
60
+
33
61
/**
34
62
* @inheritDoc
35
63
*/
36
64
public startSpan ( name : string , options : opentracing . SpanOptions = { } ) : Span {
37
65
return ( super . startSpan ( name , options ) as unknown ) as Span ;
38
66
}
39
67
68
+ /**
69
+ * @inheritDoc
70
+ */
71
+ public inject ( spanContext : SpanContext | Span , format : string , carrier : any ) : void {
72
+ const context = spanContext instanceof Span ? spanContext . context ( ) : spanContext ;
73
+ this . _inject ( context as SpanContext , format , carrier ) ;
74
+ }
75
+
40
76
/**
41
77
* Sets the current traceId, all new created spans will receive the traceId.
42
78
*
0 commit comments