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); }
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); }