示例#1
0
        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());
        }
示例#3
0
        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)));
        }
示例#4
0
文件: Adapt.cs 项目: lulzzz/Jasiri
 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));
        }