Beispiel #1
0
        public override async Task DuplexStreaming(
            IAsyncStreamReader <HelloRequest> requestStream,
            IServerStreamWriter <HelloResult> responseStream,
            ServerCallContext context)
        {
            var greet = CompatibilityToolsTestExtensions.DeserializeMethodInput <string>(ProtobufMarshallerFactory.Default, context.RequestHeaders);
            await context.WriteResponseHeadersAsync(CompatibilityToolsTestExtensions.SerializeMethodOutput(ProtobufMarshallerFactory.Default, greet)).ConfigureAwait(false);

            while (await requestStream.MoveNext(context.CancellationToken).ConfigureAwait(false))
            {
                var message = greet + " " + requestStream.Current.Name + "!";
                await responseStream.WriteAsync(new HelloResult { Message = message }).ConfigureAwait(false);
            }
        }
Beispiel #2
0
        public async Task DuplexStreamingNativeCall(string channelName)
        {
            var client   = new Greeter.GreeterClient(GetChannel(channelName));
            var response = new List <string>();

            using (var call = client.DuplexStreaming(CompatibilityToolsTestExtensions.SerializeMethodInput(ProtobufMarshallerFactory.Default, "Hello")))
            {
                var responseHeaders = await call.ResponseHeadersAsync.ConfigureAwait(false);

                CompatibilityToolsTestExtensions.DeserializeMethodOutput <string>(ProtobufMarshallerFactory.Default, responseHeaders).ShouldBe("Hello");

                foreach (var name in new[] { "person 1", "person 2" })
                {
                    await call.RequestStream.WriteAsync(new HelloRequest { Name = name });
                }

                await call.RequestStream.CompleteAsync();

                while (await call.ResponseStream.MoveNext(default))