public void Inject <TCarrier>(ISpanContext spanContext, IFormat <TCarrier> format, TCarrier carrier) { VerifySupportedFormat(format); ITextMap implCarrier = GetRealCarrier(carrier); Trace trace = GetRealSpanContext(spanContext).Trace; _traceInjector.Inject(trace, implCarrier, (c, key, value) => c.Set(key, value)); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { using (var clientTrace = new ClientTrace(_serviceName, request.Method.ToString())) { if (clientTrace.Trace != null) { _injector.Inject(clientTrace.Trace, request.Headers, (c, key, value) => c.Add(key, value)); } return(await TraceHelper.TracedActionAsync(base.SendAsync(request, cancellationToken))); } }
protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { Trace trace; if (!_extractor.TryExtract(request.Headers, (c, key) => c.GetValues(key).FirstOrDefault(), out trace)) { trace = Trace.Create(); } Trace.Current = trace; using (new ServerTrace(_serviceName, request.Method.Method)) { trace.Record(Annotations.Tag("http.host", request.RequestUri.Host.ToString())); trace.Record(Annotations.Tag("http.uri", request.RequestUri.ToString())); trace.Record(Annotations.Tag("http.path", request.RequestUri.AbsolutePath)); var result = await base.SendAsync(request, cancellationToken); _injector.Inject(trace, result.Headers, (c, key, value) => c.Add(key, value)); return(result); } }