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));
        }
Example #2
0
        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;
            }
        }
Example #6
0
        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);
        }