示例#1
0
        public async Task MinRequestBodyDataRateFeature_ClientStreaming_DisablesRequestBodyDataRate()
        {
            // Arrange
            var httpContext = CreateContext();
            var method      = new Method <TestMessage, TestMessage>(MethodType.ClientStreaming, "test", "test", _marshaller, _marshaller);
            var call        = new ClientStreamingServerCallHandler <TestService, TestMessage, TestMessage>(
                method,
                (service, reader, context) => Task.FromResult(new TestMessage()),
                new GrpcServiceOptions(),
                NullLoggerFactory.Instance);

            // Act
            await call.HandleCallAsync(httpContext);

            // Assert
            Assert.Null(httpContext.Features.Get <IHttpMinRequestBodyDataRateFeature>().MinDataRate);
        }
示例#2
0
        public void AddClientStreamingMethod <TRequestHeader, TRequest, TResponse>(
            Method <Message <TRequest>, TResponse> method,
            Func <MethodInfo> resolveContractMethodDefinition,
            Marshaller <TRequestHeader>?requestHeaderMarshaller,
            IList <object> metadata,
            Func <TService, TRequestHeader?, IAsyncEnumerable <TRequest>, ServerCallContext, Task <TResponse> > handler)
            where TRequestHeader : class
            where TResponse : class
        {
            var filterHandlerFactory = _filterRegistration.CreateHandlerFactory(metadata, resolveContractMethodDefinition);
            var invoker = new ClientStreamingServerCallHandler <TService, TRequestHeader, TRequest, TResponse>(handler, requestHeaderMarshaller, filterHandlerFactory);

            if (_requiresGrpcMarker)
            {
                metadata = AddServiceModelGrpcMarker(metadata, filterHandlerFactory?.ContractMethodDefinition ?? resolveContractMethodDefinition());
            }

            _context.AddClientStreamingMethod(method, metadata, invoker.Handle);
        }