public void Inject <TCarrier>(ISpanContext spanContext, IFormat <TCarrier> format, TCarrier carrier) { VerifySupportedFormat(format); ITextMap implCarrier = GetRealCarrier(carrier); Trace trace = GetRealSpanContext(spanContext).Trace; _injector.Inject(trace.CurrentSpan, implCarrier); }
public void Inject(OpenTracingSpanContext spanContext, object carrier) { ITextMap map = carrier as ITextMap; if (map == null) { throw new NotSupportedException("Carrier should have type ITextMap"); } map.Set(HttpHeaderNames.HttpHeaderParentId, spanContext.Context.SpanId.ToString()); map.Set(HttpHeaderNames.HttpHeaderTraceId, spanContext.Context.TraceId.ToString()); }
public ISpanContext Extract <TCarrier>(IFormat <TCarrier> format, TCarrier carrier) { VerifySupportedFormat(format); ITextMap implCarrier = GetRealCarrier(carrier); ITraceContext traceContext = _extractor.Extract(implCarrier); if (traceContext == null) { return(null); } return(new OtSpanContext(Trace.CreateFromId(traceContext))); }
public static IPropagatorMap ToPropagatorMap(this ITextMap textMap) => new PropagatorMapAdapter(textMap);
public OpenTracingSpanContext Extract(object carrier) { ITextMap map = carrier as ITextMap; if (map == null) { throw new NotSupportedException("Carrier should have type ITextMap"); } string parentIdHeader = null; string traceIdHeader = null; foreach (var keyVal in map) { if (keyVal.Key.Equals(HttpHeaderNames.HttpHeaderParentId, StringComparison.InvariantCultureIgnoreCase)) { parentIdHeader = keyVal.Value; } if (keyVal.Key.Equals(HttpHeaderNames.HttpHeaderTraceId, StringComparison.InvariantCultureIgnoreCase)) { traceIdHeader = keyVal.Value; } } if (parentIdHeader == null) { throw new ArgumentException($"{HttpHeaderNames.HttpHeaderParentId} should be set."); } if (traceIdHeader == null) { throw new ArgumentException($"{HttpHeaderNames.HttpHeaderTraceId} should be set."); } ulong parentId; try { parentId = Convert.ToUInt64(parentIdHeader); } catch (FormatException) { throw new FormatException($"{HttpHeaderNames.HttpHeaderParentId} should contain an unsigned integer value"); } ulong traceId; try { traceId = Convert.ToUInt64(traceIdHeader); } catch (FormatException) { throw new FormatException($"{HttpHeaderNames.HttpHeaderTraceId} should contain an unsigned integer value"); } SpanContext ddSpanContext = new SpanContext(traceId, parentId); return(new OpenTracingSpanContext(ddSpanContext)); }