コード例 #1
0
ファイル: SegmentV5Helpers.cs プロジェクト: shanyipeng/KissU
        private static SpanObject MapToSpan(SpanRequest request)
        {
            var spanObject = new SpanObject
            {
                SpanId       = request.SpanId,
                ParentSpanId = request.ParentSpanId,
                StartTime    = request.StartTime,
                EndTime      = request.EndTime,
                SpanType     = (SpanType)request.SpanType,
                SpanLayer    = (SpanLayer)request.SpanLayer,
                IsError      = request.IsError
            };

            ReadStringOrIntValue(spanObject, request.Component, ComponentReader, ComponentIdReader);
            ReadStringOrIntValue(spanObject, request.OperationName, OperationNameReader, OperationNameIdReader);
            ReadStringOrIntValue(spanObject, request.Peer, PeerReader, PeerIdReader);

            spanObject.Tags.Add(request.Tags.Select(x => new KeyWithStringValue {
                Key = x.Key, Value = x.Value
            }));
            spanObject.Refs.AddRange(request.References.Select(MapToSegmentReference).ToArray());
            spanObject.Logs.AddRange(request.Logs.Select(MapToLogMessage).ToArray());

            return(spanObject);
        }
コード例 #2
0
        public SegmentRequest Map(SegmentContext segmentContext)
        {
            var segmentRequest = new SegmentRequest
            {
                UniqueIds = new[]
                {
                    MapUniqueId(segmentContext.TraceId)
                }
            };
            var segmentObjectRequest = new SegmentObjectRequest
            {
                SegmentId         = MapUniqueId(segmentContext.SegmentId),
                ServiceId         = segmentContext.ServiceId,
                ServiceInstanceId = segmentContext.ServiceInstanceId
            };

            segmentRequest.Segment = segmentObjectRequest;
            var span = new SpanRequest
            {
                SpanId        = segmentContext.Span.SpanId,
                ParentSpanId  = segmentContext.Span.ParentSpanId,
                OperationName = segmentContext.Span.OperationName,
                StartTime     = segmentContext.Span.StartTime,
                EndTime       = segmentContext.Span.EndTime,
                SpanType      = (int)segmentContext.Span.SpanType,
                SpanLayer     = (int)segmentContext.Span.SpanLayer,
                IsError       = segmentContext.Span.IsError,
                Peer          = segmentContext.Span.Peer,
                Component     = segmentContext.Span.Component
            };

            foreach (var reference in segmentContext.References)
            {
                span.References.Add(new SegmentReferenceRequest
                {
                    ParentSegmentId         = MapUniqueId(reference.ParentSegmentId),
                    ParentServiceInstanceId = reference.ParentServiceInstanceId,
                    ParentSpanId            = reference.ParentSpanId,
                    ParentEndpointName      = reference.ParentEndpoint,
                    EntryServiceInstanceId  = reference.EntryServiceInstanceId,
                    EntryEndpointName       = reference.EntryEndpoint,
                    NetworkAddress          = reference.NetworkAddress,
                    RefType = (int)reference.Reference
                });
            }

            foreach (var tag in segmentContext.Span.Tags)
            {
                span.Tags.Add(new KeyValuePair <string, string>(tag.Key, tag.Value));
            }

            foreach (var log in segmentContext.Span.Logs)
            {
                var logData = new LogDataRequest {
                    Timestamp = log.Timestamp
                };
                foreach (var data in log.Data)
                {
                    logData.Data.Add(new KeyValuePair <string, string>(data.Key, data.Value));
                }
                span.Logs.Add(logData);
            }

            segmentObjectRequest.Spans.Add(span);
            return(segmentRequest);
        }
コード例 #3
0
        public virtual SpanRequest Transform()
        {
            var spanRequest = new SpanRequest
            {
                SpanId        = _spanId,
                ParentSpanId  = _parnetSpanId,
                StartTime     = _startTime,
                EndTime       = _endTime,
                OperationName = _operationName,
                Duration      = (_endTime - _startTime).TotalMilliseconds
            };

            if (IsEntry)
            {
                spanRequest.SpanType = 0;
            }
            else if (IsExit)
            {
                spanRequest.SpanType = 1;
            }
            else
            {
                spanRequest.SpanType = 2;
            }

            if (_layer.HasValue)
            {
                spanRequest.SpanLayer = (int)_layer.Value;
            }

            if (_spanComponent.HasValue)
            {
                spanRequest.Component = _spanComponent.ToString();
            }

            foreach (var tag in Tags)
            {
                spanRequest.Tags.Add(new KeyValuePair <string, string>(tag.Key, tag.Value));
            }

            if (Logs != null)
            {
                foreach (var logDataEntity in Logs)
                {
                    var logMessage = new LogDataRequest
                    {
                        Timestamp = logDataEntity.Timestamp
                    };
                    foreach (var log in logDataEntity.Fields)
                    {
                        logMessage.Data.Add(new KeyValuePair <string, string>(log.Key, log.Value));
                    }
                    spanRequest.Logs.Add(logMessage);
                }
            }
            if (_refs == null)
            {
                return(spanRequest);
            }
            foreach (var traceSegmentRef in _refs)
            {
                spanRequest.References.Add(traceSegmentRef.Transform());
            }
            return(spanRequest);
        }