Esempio n. 1
0
        public static Task <bool> MoveNextAsync <T>(this IAsyncRequestStream <T> serverStream, CancellationToken cancellationToken) where T : class
        {
            if (!(serverStream is AsyncRequestStream <T> grpcServerStream))
            {
                throw new InvalidCastException("The stream is not grpc stream!");
            }

            return(grpcServerStream.GrpcReader.MoveNext(cancellationToken));
        }
Esempio n. 2
0
        public static Task CompleteAsync <T>(this IAsyncRequestStream <T> requestStream) where T : class
        {
            if (!(requestStream is AsyncRequestStream <T> grpcRequestStream))
            {
                throw new InvalidCastException("The stream is not grpc stream!");
            }

            return(grpcRequestStream.StreamWriter.CompleteAsync());
        }
Esempio n. 3
0
        public static T GetCurrent <T>(this IAsyncRequestStream <T> serverStream) where T : class
        {
            if (!(serverStream is AsyncRequestStream <T> grpcServerStream))
            {
                throw new InvalidCastException("The stream is not grpc stream!");
            }

            return(grpcServerStream.GrpcReader.Current);
        }
Esempio n. 4
0
        public Task <TResponse> ClientStreamAsync <TRequest, TResponse>(IAsyncRequestStream <TRequest> request, string service, string methodName) where TRequest : class where TResponse : class
        {
            var client      = getProxyer(service);
            var channelInfo = client.GetChannel();
            var invoker     = channelInfo.GetInvoker(_provider);
            var method      = GetMethod <TRequest, TResponse>(service, methodName, MethodType.ClientStreaming);

            var result        = invoker.AsyncClientStreamingCall(method, channelInfo.Options.Address, new CallOptions());
            var requestStream = (AsyncRequestStream <TRequest>)request;

            requestStream.StreamWriter = result.RequestStream;
            return(result.ResponseAsync);
        }