public AsyncDuplexStreamingCall <TRequest, TResponse> AsyncDuplexStreamingCall(Interceptor.AsyncDuplexStreamingCallContinuation <TRequest, TResponse> continuation) { var rspCnt = continuation(_context); var tracingRequestStream = new TracingClientStreamWriter <TRequest>(rspCnt.RequestStream, _logger.Request); var tracingResponseStream = new TracingAsyncStreamReader <TResponse>(rspCnt.ResponseStream, _logger.Response, _logger.FinishSuccess, _logger.FinishException); var rspHeaderAsync = rspCnt.ResponseHeadersAsync.ContinueWith(LogResponseHeader); return(new AsyncDuplexStreamingCall <TRequest, TResponse>(tracingRequestStream, tracingResponseStream, rspHeaderAsync, rspCnt.GetStatus, rspCnt.GetTrailers, rspCnt.Dispose)); }
public AsyncServerStreamingCall <TResponse> AsyncServerStreamingCall(TRequest request, Interceptor.AsyncServerStreamingCallContinuation <TRequest, TResponse> continuation) { _logger.Request(request); var rspCnt = continuation(request, _context); var tracingResponseStream = new TracingAsyncStreamReader <TResponse>(rspCnt.ResponseStream, _streamActions); var rspHeaderAsync = rspCnt.ResponseHeadersAsync.ContinueWith(LogResponseHeader); return(new AsyncServerStreamingCall <TResponse>(tracingResponseStream, rspHeaderAsync, rspCnt.GetStatus, rspCnt.GetTrailers, rspCnt.Dispose)); }
public InterceptedServerHandler(ServerTracingConfiguration configuration, ServerCallContext context) { _configuration = configuration; _context = context; var span = GetSpanFromContext(); _logger = new GrpcTraceLogger <TRequest, TResponse>(span, configuration); var scopeActions = new ScopeActions("new_request", _logger.BeginScope, _logger.EndScope); _streamActions = new TracingAsyncStreamReader <TRequest> .StreamActions(scopeActions, _logger.Request); }
public async Task DuplexStreamingServerHandler(IAsyncStreamReader <TRequest> requestStream, IServerStreamWriter <TResponse> responseStream, DuplexStreamingServerMethod <TRequest, TResponse> continuation) { try { var tracingRequestStream = new TracingAsyncStreamReader <TRequest>(requestStream, _streamActions); var tracingResponseStream = new TracingServerStreamWriter <TResponse>(responseStream, _logger.Response); await continuation(tracingRequestStream, tracingResponseStream, _context).ConfigureAwait(false); _logger.FinishSuccess(); } catch (Exception ex) { _logger.FinishException(ex); throw; } }
public async Task <TResponse> ClientStreamingServerHandler(IAsyncStreamReader <TRequest> requestStream, ClientStreamingServerMethod <TRequest, TResponse> continuation) { try { var tracingRequestStream = new TracingAsyncStreamReader <TRequest>(requestStream, _logger.Request); var response = await continuation(tracingRequestStream, _context).ConfigureAwait(false); _logger.Response(response); _logger.FinishSuccess(); return(response); } catch (Exception ex) { _logger.FinishException(ex); throw; } }
public InterceptedClientHandler(ClientTracingConfiguration configuration, ClientInterceptorContext <TRequest, TResponse> context) { _configuration = configuration; _context = context; var callOptions = ApplyConfigToCallOptions(_context.Options); if (!Equals(callOptions, context.Options)) { _context = new ClientInterceptorContext <TRequest, TResponse>(context.Method, context.Host, callOptions); } var span = InitializeSpanWithHeaders(); _logger = new GrpcTraceLogger <TRequest, TResponse>(span, configuration); _configuration.Tracer.Inject(span.Context, BuiltinFormats.HttpHeaders, new MetadataCarrier(_context.Options.Headers)); var scopeActions = new ScopeActions("new_response", _logger.BeginScope, _logger.EndScope); _streamActions = new TracingAsyncStreamReader <TResponse> .StreamActions(scopeActions, _logger.Response, _logger.FinishSuccess, _logger.FinishException); }