Exemple #1
0
        public override async Task GetTrace(GetTraceRequest request, IServerStreamWriter <SpansResponseChunk> responseStream, ServerCallContext context)
        {
            var traceId = _Mapper.Map <string>(request.TraceId);

            _Logger.Log(LogLevel.Information, "GrpcQuery.GetTrace.{0}", traceId);
            var result = await _TracingQuery.GetTracing(traceId, context.CancellationToken);

            SpansResponseChunk response = new SpansResponseChunk();
            var process = result.Processes;
            List <Jaeger.ApiV2.Span> spans = new List <Span>();

            foreach (var spanModel in result.Spans)
            {
                var span = _Mapper.Map <Span>(spanModel);
                if (!string.IsNullOrEmpty(spanModel.ProcessId) &&
                    process.TryGetValue(spanModel.ProcessId, out var spanProcess) && spanProcess != null)
                {
                    span.Process = _Mapper.Map <Jaeger.ApiV2.Process>(spanProcess);
                }
                spans.Add(span);
            }
            var repeatedField_span = new RepeatedField <Span>();

            repeatedField_span.AddRange(spans);
            response.Spans.Add(_Mapper.Map <RepeatedField <Span> >(repeatedField_span));
            await responseStream.WriteAsync(response);
        }
Exemple #2
0
        public override async Task FindTraces(FindTracesRequest request, IServerStreamWriter <SpansResponseChunk> responseStream, ServerCallContext context)
        {
            var query  = _Mapper.Map <Model.Dto.TracingQueryParameter>(request.Query);
            var result = await _TracingQuery.GetTracing(query, context.CancellationToken);

            SpansResponseChunk       spansResponseChunk = new SpansResponseChunk();
            List <Jaeger.ApiV2.Span> spans = new List <Span>();

            foreach (var item in result)
            {
                var process = item.Processes;
                foreach (var spanModel in item.Spans)
                {
                    var span = _Mapper.Map <Span>(spanModel);
                    if (!string.IsNullOrEmpty(spanModel.ProcessId) &&
                        process.TryGetValue(spanModel.ProcessId, out var spanProcess) && spanProcess != null)
                    {
                        span.Process = _Mapper.Map <Jaeger.ApiV2.Process>(spanProcess);
                    }
                    spans.Add(span);
                }
            }
            var repeatedField_span = new RepeatedField <Span>();

            repeatedField_span.AddRange(spans);
            spansResponseChunk.Spans.Add(_Mapper.Map <RepeatedField <Span> >(repeatedField_span));
            await responseStream.WriteAsync(spansResponseChunk);
        }