Exemplo n.º 1
0
        public ISpan Start(ISpanBuilder spanBuilder)
        {
            if (spanBuilder == null)
            {
                throw new ArgumentNullException(nameof(spanBuilder));
            }

            var traceId = spanBuilder.References?.FirstOrDefault()?.SpanContext?.TraceId ?? Guid.NewGuid().ToString();
            var spanId  = Guid.NewGuid().ToString();

            var baggage = new Baggage();

            if (spanBuilder.References != null)
            {
                foreach (var reference in spanBuilder.References)
                {
                    baggage.Merge(reference.SpanContext.Baggage);
                }
            }

            var sampled     = spanBuilder.Sampled ?? _sampler?.ShouldSample();
            var spanContext = _spanContextFactory.Create(new SpanContextPackage(traceId, spanId, sampled.GetValueOrDefault(true), baggage, spanBuilder.References));

            return(new Span(spanBuilder.OperationName, spanBuilder.StartTimestamp ?? DateTimeOffset.UtcNow, spanContext, _spanRecorder));
        }
Exemplo n.º 2
0
        public ISpanContext Read(ICarrier carrier)
        {
            var textMapCarrier = carrier as ITextMapCarrier;

            if (textMapCarrier == null)
            {
                return(null);
            }

            var traceId = textMapCarrier.GetTraceId();
            var spanId  = textMapCarrier.GetSpanId();
            var sampled = textMapCarrier.GetSampled();

            return(_spanContextFactory.Create(new SpanContextPackage(traceId, spanId, sampled, textMapCarrier.GetBaggage())));
        }
Exemplo n.º 3
0
        public ISpan Start(ISpanBuilder spanBuilder)
        {
            if (spanBuilder == null)
            {
                throw new ArgumentNullException(nameof(spanBuilder));
            }

            var traceId = spanBuilder.References?.FirstOrDefault()?.SpanContext?.TraceId ?? Guid.NewGuid().ToString();
            var spanId  = Guid.NewGuid().ToString();

            Baggage baggage = new Baggage();

            foreach (var reference in spanBuilder.References)
            {
                baggage.Merge(reference.SpanContext.Baggage);
            }
            var spanContext = _spanContextFactory.Create(new SpanContextPackage(traceId, spanId, _sampler.ShouldSample(), baggage));

            return(new Span(spanBuilder.OperationName, spanContext, _spanQueue));
        }