public async Task <TResponse> Execute(IAsyncStreamReader <TRequest> requestStream, ServerCallContext context) { IncreaseActiveConnectionCount(); try { var result = ExecuteInternal(ci => ci.AsyncClientStreamingCall( _method, _target, CallOptionsHelper.Rewrite(context))); SessionHelper.HandleIfError(result, _logger); using var streamingCall = result.Value; var rewriteResult = await RewriteStream(requestStream, streamingCall.RequestStream); await streamingCall.RequestStream.CompleteAsync(); var response = await streamingCall.ResponseAsync; SessionHelper.HandleIfError(rewriteResult, _logger); return(response); } finally { FinalizeConnection(); } }
public async Task Execute(IAsyncStreamReader <TRequest> requestStream, IServerStreamWriter <TResponse> responseStream, ServerCallContext context) { IncreaseActiveConnectionCount(); try { var result = ExecuteInternal(ci => ci.AsyncDuplexStreamingCall( _method, _target, CallOptionsHelper.Rewrite(context))); SessionHelper.HandleIfError(result, _logger); using var streamSource = result.Value; var requestRewriteTask = RewriteStream(requestStream, streamSource.RequestStream); var responseRewriteTask = RewriteStream(streamSource.ResponseStream, responseStream); await Task.WhenAny(requestRewriteTask, responseRewriteTask); await streamSource.RequestStream.CompleteAsync(); SessionHelper.HandleIfError(await requestRewriteTask, _logger); SessionHelper.HandleIfError(await responseRewriteTask, _logger); } finally { FinalizeConnection(); } }
public async Task <TResponse> Execute(TRequest request, ServerCallContext context) { IncreaseActiveConnectionCount(); try { var result = ExecuteInternal(ci => ci.AsyncUnaryCall(_method, _target, CallOptionsHelper.Rewrite(context), request)); var response = await result.Value; SessionHelper.HandleIfError(result, _logger); return(response); } finally { FinalizeConnection(); } }
public async Task Execute(TRequest request, IServerStreamWriter <TResponse> responseStream, ServerCallContext context) { IncreaseActiveConnectionCount(); try { var result = ExecuteInternal(ci => ci.AsyncServerStreamingCall( _method, _target, CallOptionsHelper.Rewrite(context), request)); SessionHelper.HandleIfError(result, _logger); using var serverStreamingCall = result.Value; var rewriteResult = await RewriteStream(serverStreamingCall.ResponseStream, responseStream); SessionHelper.HandleIfError(rewriteResult, _logger); } finally { FinalizeConnection(); } }