Esempio n. 1
0
 static async Task AwaitHandleCall(HttpApiServerCallContext serverCallContext, Method <TRequest, TResponse> method, bool isStreaming, JsonSerializerOptions serializerOptions, Task handleCall)
 {
     try
     {
         await handleCall;
         await serverCallContext.EndCallAsync();
     }
     catch (Exception ex)
     {
         await serverCallContext.ProcessHandlerErrorAsync(ex, method.Name, isStreaming, serializerOptions);
     }
 }
Esempio n. 2
0
        public Task HandleCallAsync(HttpContext httpContext)
        {
            var serverCallContext = new HttpApiServerCallContext(httpContext, MethodInvoker.Options, MethodInvoker.Method, DescriptorInfo, Logger);

            httpContext.Features.Set <IServerCallContextFeature>(serverCallContext);

            try
            {
                var handleCallTask = HandleCallAsyncCore(httpContext, serverCallContext);

                if (handleCallTask.IsCompletedSuccessfully)
                {
                    return(serverCallContext.EndCallAsync());
                }
                else
                {
                    return(AwaitHandleCall(serverCallContext, MethodInvoker.Method, IsStreaming, SerializerOptions, handleCallTask));
                }
            }
            catch (Exception ex)
            {
                return(serverCallContext.ProcessHandlerErrorAsync(ex, MethodInvoker.Method.Name, IsStreaming, SerializerOptions));
            }