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)); }
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()); }
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); }
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); }