예제 #1
0
파일: Helper.cs 프로젝트: NameIsBad/NetRpc
 public static void CopyBaggageItemsTo(this ISpanContext spanContext, ISpan span)
 {
     foreach (var pair in spanContext.GetBaggageItems())
     {
         span.SetBaggageItem(pair.Key, pair.Value);
     }
 }
예제 #2
0
        public void Inject(ISpanContext spanContext, ITextMap carrier)
        {
            carrier.Set(_spanContextKey, spanContext.ToString());

            foreach (var baggage in spanContext.GetBaggageItems())
            {
                carrier.Set(baggage.Key, baggage.Value);
            }
        }
예제 #3
0
        public void Inject <TCarrier>(ISpanContext spanContext, TCarrier carrier)
        {
            if (carrier is ITextMap map)
            {
                map.Set(_headersConfig.TraceContextHeaderName, _encodeValue(spanContext.ToString()));

                foreach (var baggage in spanContext.GetBaggageItems())
                {
                    map.Set($"{_headersConfig.TraceBaggageHeaderPrefix}-{baggage.Key}", _encodeValue(baggage.Value));
                }
                return;
            }
            throw new ArgumentException($"{nameof(carrier)} is not ITextMap");
        }
예제 #4
0
 public SpanContext(ISpanContext ctx)
 {
     TraceId      = ctx.TraceId;
     SpanId       = ctx.SpanId;
     BaggageItems = BaggageItem.ToConvert(ctx.GetBaggageItems());
 }
 public virtual IEnumerable <KeyValuePair <string, string> > GetBaggageItems() => _spanContext.GetBaggageItems();