private static OtlpTrace.Span.Types.Link ToOtlpLink(ActivityLink activityLink)
        {
            // protobuf doesn't understand Span<T> yet: https://github.com/protocolbuffers/protobuf/issues/3431
            Span <byte> traceIdBytes = stackalloc byte[16];
            Span <byte> spanIdBytes  = stackalloc byte[8];

            activityLink.Context.TraceId.CopyTo(traceIdBytes);
            activityLink.Context.SpanId.CopyTo(spanIdBytes);

            var otlpLink = new OtlpTrace.Span.Types.Link
            {
                TraceId = ByteString.CopyFrom(traceIdBytes.ToArray()),
                SpanId  = ByteString.CopyFrom(spanIdBytes.ToArray()),
            };

            if (activityLink.Tags != null)
            {
                foreach (var attribute in from tag in activityLink.Tags
                         let attribute = ToOtlpAttributes(tag)
                                         where attribute != null && attribute.Any()
                                         select attribute)
                {
                    otlpLink.Attributes.AddRange(attribute);
                }
            }

            return(otlpLink);
        }
        private static Proto.Trace.V1.Span.Types.Link FromILink(Link source)
        {
            // protobuf doesn't understand Span<T> yet: https://github.com/protocolbuffers/protobuf/issues/3431
            Span <byte> traceIdBytes = stackalloc byte[16];
            Span <byte> spanIdBytes  = stackalloc byte[8];

            source.Context.TraceId.CopyTo(traceIdBytes);
            source.Context.SpanId.CopyTo(spanIdBytes);

            var result = new Proto.Trace.V1.Span.Types.Link
            {
                Attributes = FromIAttributeMap(source.Attributes),
                TraceId    = ByteString.CopyFrom(traceIdBytes.ToArray()),
                SpanId     = ByteString.CopyFrom(spanIdBytes.ToArray()),
            };

            return(result);
        }
Ejemplo n.º 3
0
        private static OtlpTrace.Span.Types.Link ToOtlpLink(Link source)
        {
            // protobuf doesn't understand Span<T> yet: https://github.com/protocolbuffers/protobuf/issues/3431
            Span <byte> traceIdBytes = stackalloc byte[16];
            Span <byte> spanIdBytes  = stackalloc byte[8];

            source.Context.TraceId.CopyTo(traceIdBytes);
            source.Context.SpanId.CopyTo(spanIdBytes);

            var otlpLink = new OtlpTrace.Span.Types.Link
            {
                TraceId = ByteString.CopyFrom(traceIdBytes.ToArray()),
                SpanId  = ByteString.CopyFrom(spanIdBytes.ToArray()),
            };

            otlpLink.Attributes.AddRange(source.Attributes.Select(ToOtlpAttribute));

            return(otlpLink);
        }