@@ -30,13 +30,49 @@ export class Tracer extends opentracing.Tracer {
3030 return span ;
3131 }
3232
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+
3361 /**
3462 * @inheritDoc
3563 */
3664 public startSpan ( name : string , options : opentracing . SpanOptions = { } ) : Span {
3765 return ( super . startSpan ( name , options ) as unknown ) as Span ;
3866 }
3967
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+
4076 /**
4177 * Sets the current traceId, all new created spans will receive the traceId.
4278 *
0 commit comments