diff --git a/src/csharp/GrpcApi/TestServiceGrpc.cs b/src/csharp/GrpcApi/TestServiceGrpc.cs index 65ca1f0767782daa4d736235954738729d1f08d6..e836d604929265ed36052dc0e80ef7d899854f30 100644 --- a/src/csharp/GrpcApi/TestServiceGrpc.cs +++ b/src/csharp/GrpcApi/TestServiceGrpc.cs @@ -15,6 +15,10 @@ namespace grpc.testing readonly static Marshaller<Empty> emptyMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), Empty.ParseFrom); readonly static Marshaller<SimpleRequest> simpleRequestMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), SimpleRequest.ParseFrom); readonly static Marshaller<SimpleResponse> simpleResponseMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), SimpleResponse.ParseFrom); + readonly static Marshaller<StreamingOutputCallRequest> streamingOutputCallRequestMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), StreamingOutputCallRequest.ParseFrom); + readonly static Marshaller<StreamingOutputCallResponse> streamingOutputCallResponseMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), StreamingOutputCallResponse.ParseFrom); + readonly static Marshaller<StreamingInputCallRequest> streamingInputCallRequestMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), StreamingInputCallRequest.ParseFrom); + readonly static Marshaller<StreamingInputCallResponse> streamingInputCallResponseMarshaller = Marshallers.Create((arg) => arg.ToByteArray(), StreamingInputCallResponse.ParseFrom); readonly static Method<Empty, Empty> emptyCallMethod = new Method<Empty, Empty>( MethodType.Unary, @@ -28,6 +32,30 @@ namespace grpc.testing simpleRequestMarshaller, simpleResponseMarshaller ); + readonly static Method<StreamingOutputCallRequest, StreamingOutputCallResponse> streamingOutputCallMethod = new Method<StreamingOutputCallRequest, StreamingOutputCallResponse>( + MethodType.ServerStreaming, + "/grpc.testing.TestService/StreamingOutputCall", + streamingOutputCallRequestMarshaller, + streamingOutputCallResponseMarshaller + ); + readonly static Method<StreamingInputCallRequest, StreamingInputCallResponse> streamingInputCallMethod = new Method<StreamingInputCallRequest, StreamingInputCallResponse>( + MethodType.ClientStreaming, + "/grpc.testing.TestService/StreamingInputCall", + streamingInputCallRequestMarshaller, + streamingInputCallResponseMarshaller + ); + readonly static Method<StreamingOutputCallRequest, StreamingOutputCallResponse> fullDuplexCallMethod = new Method<StreamingOutputCallRequest, StreamingOutputCallResponse>( + MethodType.DuplexStreaming, + "/grpc.testing.TestService/FullDuplexCall", + streamingOutputCallRequestMarshaller, + streamingOutputCallResponseMarshaller + ); + readonly static Method<StreamingOutputCallRequest, StreamingOutputCallResponse> halfDuplexCallMethod = new Method<StreamingOutputCallRequest, StreamingOutputCallResponse>( + MethodType.DuplexStreaming, + "/grpc.testing.TestService/HalfDuplexCall", + streamingOutputCallRequestMarshaller, + streamingOutputCallResponseMarshaller + ); public interface ITestServiceClient { @@ -39,10 +67,13 @@ namespace grpc.testing Task<SimpleResponse> UnaryCallAsync(SimpleRequest request, CancellationToken token = default(CancellationToken)); - // TODO: StreamingOutputCall - // TODO: StreamingInputCall - // TODO: FullDuplexCall - // TODO: HalfDuplexCall + Task StreamingOutputCall(StreamingOutputCallRequest request, IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)); + + ClientStreamingAsyncResult<StreamingInputCallRequest, StreamingInputCallResponse> StreamingInputCall(CancellationToken token = default(CancellationToken)); + + IObserver<StreamingOutputCallRequest> FullDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)); + + IObserver<StreamingOutputCallRequest> HalfDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)); } public class TestServiceClientStub : ITestServiceClient @@ -77,6 +108,30 @@ namespace grpc.testing var call = new Google.GRPC.Core.Call<SimpleRequest, SimpleResponse>(unaryCallMethod, channel); return Calls.AsyncUnaryCall(call, request, token); } + + public Task StreamingOutputCall(StreamingOutputCallRequest request, IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)) { + var call = new Google.GRPC.Core.Call<StreamingOutputCallRequest, StreamingOutputCallResponse>(streamingOutputCallMethod, channel); + return Calls.AsyncServerStreamingCall(call, request, responseObserver, token); + } + + public ClientStreamingAsyncResult<StreamingInputCallRequest, StreamingInputCallResponse> StreamingInputCall(CancellationToken token = default(CancellationToken)) + { + var call = new Google.GRPC.Core.Call<StreamingInputCallRequest, StreamingInputCallResponse>(streamingInputCallMethod, channel); + return Calls.AsyncClientStreamingCall(call, token); + } + + public IObserver<StreamingOutputCallRequest> FullDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)) + { + var call = new Google.GRPC.Core.Call<StreamingOutputCallRequest, StreamingOutputCallResponse>(fullDuplexCallMethod, channel); + return Calls.DuplexStreamingCall(call, responseObserver, token); + } + + + public IObserver<StreamingOutputCallRequest> HalfDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver, CancellationToken token = default(CancellationToken)) + { + var call = new Google.GRPC.Core.Call<StreamingOutputCallRequest, StreamingOutputCallResponse>(halfDuplexCallMethod, channel); + return Calls.DuplexStreamingCall(call, responseObserver, token); + } } // server-side interface @@ -85,6 +140,14 @@ namespace grpc.testing void EmptyCall(Empty request, IObserver<Empty> responseObserver); void UnaryCall(SimpleRequest request, IObserver<SimpleResponse> responseObserver); + + void StreamingOutputCall(StreamingOutputCallRequest request, IObserver<StreamingOutputCallResponse> responseObserver); + + IObserver<StreamingInputCallRequest> StreamingInputCall(IObserver<StreamingInputCallResponse> responseObserver); + + IObserver<StreamingOutputCallRequest> FullDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver); + + IObserver<StreamingOutputCallRequest> HalfDuplexCall(IObserver<StreamingOutputCallResponse> responseObserver); } public static ServerServiceDefinition BindService(ITestService serviceImpl) @@ -92,6 +155,10 @@ namespace grpc.testing return ServerServiceDefinition.CreateBuilder("/grpc.testing.TestService/") .AddMethod(emptyCallMethod, serviceImpl.EmptyCall) .AddMethod(unaryCallMethod, serviceImpl.UnaryCall) + .AddMethod(streamingOutputCallMethod, serviceImpl.StreamingOutputCall) + .AddMethod(streamingInputCallMethod, serviceImpl.StreamingInputCall) + .AddMethod(fullDuplexCallMethod, serviceImpl.FullDuplexCall) + .AddMethod(halfDuplexCallMethod, serviceImpl.HalfDuplexCall) .Build(); }