static ClientStreamingServerMethod <TRequest, TResponse> BuildInvoker(InterceptorRegistration interceptorRegistration, ClientStreamingServerMethod <TRequest, TResponse> next) { return(async(requestStream, context) => { var interceptorActivator = (IGrpcInterceptorActivator)context.GetHttpContext().RequestServices.GetRequiredService(interceptorRegistration.ActivatorType); var interceptorInstance = CreateInterceptor(interceptorRegistration, interceptorActivator); try { return await interceptorInstance.ClientStreamingServerHandler(requestStream, context, next); } finally { interceptorActivator.Release(interceptorInstance); } }); }
static ClientStreamingServerMethod <TRequest, TResponse> BuildInvoker(InterceptorRegistration interceptorRegistration, IServiceProvider serviceProvider, ClientStreamingServerMethod <TRequest, TResponse> next) { return(async(requestStream, context) => { var interceptorActivator = interceptorRegistration.GetActivator(serviceProvider); var interceptorHandle = CreateInterceptor(interceptorRegistration, interceptorActivator, context.GetHttpContext().RequestServices); try { return await interceptorHandle.Instance.ClientStreamingServerHandler(requestStream, context, next); } finally { await interceptorActivator.ReleaseAsync(interceptorHandle); } }); }
public GrpcActivatorHandle <Interceptor> Create(IServiceProvider serviceProvider, InterceptorRegistration interceptorRegistration) { return(new GrpcActivatorHandle <Interceptor>(_interceptor, created: false, state: null)); }
public GrpcActivatorHandle <Interceptor> Create(IServiceProvider serviceProvider, InterceptorRegistration interceptorRegistration) { if (interceptorRegistration.Arguments.Count == 0) { var globalInterceptor = serviceProvider.GetService <TInterceptor>(); if (globalInterceptor != null) { return(new GrpcActivatorHandle <Interceptor>(globalInterceptor, created: false, state: null)); } } // Cache factory on registration var factory = interceptorRegistration.GetFactory(); var interceptor = (TInterceptor)factory(serviceProvider, interceptorRegistration._args); return(new GrpcActivatorHandle <Interceptor>(interceptor, created: true, state: null)); }
public GrpcActivatorHandle <Interceptor> Create(IServiceProvider serviceProvider, InterceptorRegistration interceptorRegistration) { return(new GrpcActivatorHandle <Interceptor>(Activator.CreateInstance <T>(), created: true, state: null)); }
public InterceptorActivatorHandle(InterceptorRegistration interceptorRegistration) { Registration = interceptorRegistration; }