예제 #1
0
        public static void Main(string[] args)
        {
            var channel = new Channel("127.0.0.1:50505", ChannelCredentials.Insecure);

            var client = new MiniGrpc.Common.MiniService.MiniServiceClient(channel);

            if (args.Length == 0)
            {
                Console.WriteLine("Usage: MiniGrpc.Client.exe <feature> \nFeatures: add, travel");
                return;
            }

            switch (args[0])
            {
            case "add":
                var a = 3;
                var b = 39;

                var reply = client.Add(new AddRequest()
                {
                    A = a, B = b
                });
                Console.WriteLine($"Adding {a} and {b}: {reply.C}");
                break;

            case "travel":
                AcidTrip(client).Wait();
                break;
            }

            channel.ShutdownAsync().Wait();
        }
예제 #2
0
        private async static Task AcidTrip(MiniGrpc.Common.MiniService.MiniServiceClient client)
        {
            var r         = new Random();
            var stream    = client.ReportPosition();
            var longitude = 45.123d;
            var lattitude = 123.301d;

            for (int i = 0; i < 10; i++)
            {
                lattitude += r.NextDouble() / 1000;
                longitude += r.NextDouble() / 1000;

                await stream.RequestStream.WriteAsync(new Position()
                {
                    Lattitude = lattitude,
                    Longitude = longitude
                });

                await Task.Delay(2000);

                Console.WriteLine("Moving...");
            }

            Console.WriteLine("Ahhhh... falling off the cliff... blame dotnetcore!");
            await stream.RequestStream.CompleteAsync();

            var note = await stream.ResponseAsync;

            Console.WriteLine($"Here is the note: {note.Message}");
        }