static async Task Main(string[] args)
        {
            try
            {
                Channel channel = new Channel(target, ChannelCredentials.Insecure);

                await channel.ConnectAsync().ContinueWith((task) =>
                {
                    if (task.Status == TaskStatus.RanToCompletion)
                    {
                        Console.WriteLine("The client connected successfully");
                    }
                });

                var client = new ComputeAverageService.ComputeAverageServiceClient(channel);

                var stream = client.ComputeAverage();

                string key;

                do
                {
                    Console.WriteLine(Environment.NewLine + "Digit a number or type 'ESC' to exit");
                    key = Console.ReadLine();

                    var isNumeric = int.TryParse(key, out int number);

                    if (key.ToLower() != esc && isNumeric)
                    {
                        await stream.RequestStream.WriteAsync(new ComputeAverageRequest()
                        {
                            Number = number
                        });
                    }
                } while (key.ToLower() != esc);

                await stream.RequestStream.CompleteAsync();

                var responseClientStream = await stream.ResponseAsync;

                Console.WriteLine(responseClientStream.ToString());

                channel.ShutdownAsync().Wait();
                Console.ReadLine();
            }
            catch (RpcException e)
            {
                Console.WriteLine($"StatusCode: {e.Status.StatusCode} | Detail: {e.Status.Detail}");
            }
            catch (Exception e)
            {
                Console.WriteLine("Something went wrong.");
            }
        }
Beispiel #2
0
        //Client Streaming Average
        public static async Task CalculateAverage(Channel channel)
        {
            var client = new ComputeAverageService.ComputeAverageServiceClient(channel);
            var stream = client.ComputeAverage();

            foreach (int i in Enumerable.Range(1, 4))
            {
                var request = new ComputeAverageRequest()
                {
                    Number = i
                };
                await stream.RequestStream.WriteAsync(request);
            }
            await stream.RequestStream.CompleteAsync();

            var response = await stream.ResponseAsync;

            Console.WriteLine(response.Result);
        }
Beispiel #3
0
        static async Task Main(string[] args)
        {
            //from Grpc.Core
            Channel channel = new Channel(serverAddress, ChannelCredentials.Insecure);
            await channel.ConnectAsync().ContinueWith(task =>
            {
                if (task.Status == TaskStatus.RanToCompletion ||
                    task.Status == TaskStatus.Canceled)
                {
                    Console.WriteLine("The client connected to the server successfully!");
                }
            });

            var inputStream = new[] { 1, 10, 30, 22, 4, 50, 123, 2343, 23 };
            var client      = new ComputeAverageService.ComputeAverageServiceClient(channel);

            //get stream instance
            var stream = client.ComputeAverageCalculation();

            foreach (var input in inputStream)
            {
                //write data on request stream
                await stream.RequestStream.WriteAsync(new Request { Argument = new NumberData {
                                                                        Number = input
                                                                    } });
            }

            //signal request stream end
            await stream.RequestStream.CompleteAsync();

            //get the response
            var response = await stream.ResponseAsync;

            Console.WriteLine($"Compute average for input stream {string.Join(",", inputStream)} = {response.Result.Number}");

            await channel.ShutdownAsync();

            Console.ReadKey();
        }