示例#1
0
        private SpanContext CreateChildContext()
        {
            SpanContext preferredReference = PreferredReference();

            if (IsRpcServer())
            {
                if (IsSampled())
                {
                    _tracer.Metrics.TracesJoinedSampled.Inc(1);
                }
                else
                {
                    _tracer.Metrics.TracesJoinedNotSampled.Inc(1);
                }

                // Zipkin server compatibility
                if (_tracer.ZipkinSharedRpcSpan)
                {
                    return(preferredReference);
                }
            }

            return(new SpanContext(
                       preferredReference.TraceId,
                       SpanId.NewUniqueId(),
                       preferredReference.SpanId,
                       // should we do OR across passed references?
                       preferredReference.Flags,
                       CreateChildBaggage(),
                       null));
        }