public ClientStreamingServerCallHandler( Method <TRequest, TResponse> method, ClientStreamingServerMethod <TService, TRequest, TResponse> invoker, MethodContext methodContext, ILoggerFactory loggerFactory, IGrpcServiceActivator <TService> serviceActivator, IServiceProvider serviceProvider) : base(method, methodContext, loggerFactory, serviceActivator, serviceProvider) { _invoker = invoker; if (MethodContext.HasInterceptors) { var interceptorPipeline = new InterceptorPipelineBuilder <TRequest, TResponse>(MethodContext.Interceptors, ServiceProvider); _pipelineInvoker = interceptorPipeline.ClientStreamingPipeline(ResolvedInterceptorInvoker); } }
public ClientStreamingServerCallHandler( Method <TRequest, TResponse> method, ClientStreamingServerMethod <TService, TRequest, TResponse> invoker, GrpcServiceOptions serviceOptions, ILoggerFactory loggerFactory, IGrpcServiceActivator <TService> serviceActivator, IServiceProvider serviceProvider) : base(method, serviceOptions, loggerFactory, serviceActivator, serviceProvider) { _invoker = invoker; if (ServiceOptions.HasInterceptors) { ClientStreamingServerMethod <TRequest, TResponse> resolvedInvoker = async(resolvedRequestStream, resolvedContext) => { var activator = ServiceProvider.GetRequiredService <IGrpcServiceActivator <TService> >(); GrpcActivatorHandle <TService> serviceHandle = default; try { serviceHandle = activator.Create(resolvedContext.GetHttpContext().RequestServices); return(await invoker( serviceHandle.Instance, resolvedRequestStream, resolvedContext)); } finally { if (serviceHandle.Instance != null) { activator.Release(serviceHandle); } } }; var interceptorPipeline = new InterceptorPipelineBuilder <TRequest, TResponse>(ServiceOptions.Interceptors, ServiceProvider); _pipelineInvoker = interceptorPipeline.ClientStreamingPipeline(resolvedInvoker); } }
public ClientStreamingServerCallHandler( Method <TRequest, TResponse> method, ClientStreamingServerMethod <TService, TRequest, TResponse> invoker, GrpcServiceOptions serviceOptions, ILoggerFactory loggerFactory) : base(method, serviceOptions, loggerFactory) { _invoker = invoker; if (!ServiceOptions.Interceptors.IsEmpty) { ClientStreamingServerMethod <TRequest, TResponse> resolvedInvoker = async(resolvedRequestStream, resolvedContext) => { var activator = resolvedContext.GetHttpContext().RequestServices.GetRequiredService <IGrpcServiceActivator <TService> >(); TService?service = null; try { service = activator.Create(); return(await invoker( service, resolvedRequestStream, resolvedContext)); } finally { if (service != null) { activator.Release(service); } } }; var interceptorPipeline = new InterceptorPipelineBuilder <TRequest, TResponse>(ServiceOptions.Interceptors); _pipelineInvoker = interceptorPipeline.ClientStreamingPipeline(resolvedInvoker); } }