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);
                    }
                });
            }
Пример #2
0
            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));
        }
Пример #5
0
 public GrpcActivatorHandle <Interceptor> Create(IServiceProvider serviceProvider, InterceptorRegistration interceptorRegistration)
 {
     return(new GrpcActivatorHandle <Interceptor>(Activator.CreateInstance <T>(), created: true, state: null));
 }
Пример #6
0
 public InterceptorActivatorHandle(InterceptorRegistration interceptorRegistration)
 {
     Registration = interceptorRegistration;
 }