From 7ff80cfb5e4feed06152ca2c99f1888bb484908b Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 30 Jul 2018 14:52:32 +0200 Subject: [PATCH] use local server in XamarinHelloworld --- .../HelloworldXamarin/Droid/MainActivity.cs | 41 ++++++++++++++----- .../HelloworldXamarin/iOS/ViewController.cs | 37 +++++++++++++---- 2 files changed, 59 insertions(+), 19 deletions(-) diff --git a/examples/csharp/HelloworldXamarin/Droid/MainActivity.cs b/examples/csharp/HelloworldXamarin/Droid/MainActivity.cs index 2c158e9d7cc..5883f79f09e 100644 --- a/examples/csharp/HelloworldXamarin/Droid/MainActivity.cs +++ b/examples/csharp/HelloworldXamarin/Droid/MainActivity.cs @@ -1,6 +1,7 @@ using Android.App; using Android.Widget; using Android.OS; +using System.Threading.Tasks; using Grpc.Core; using Helloworld; @@ -9,7 +10,8 @@ namespace HelloworldXamarin.Droid [Activity(Label = "HelloworldXamarin", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : Activity { - //int count = 1; + const int Port = 50051; + int count = 1; protected override void OnCreate(Bundle savedInstanceState) { @@ -25,23 +27,40 @@ namespace HelloworldXamarin.Droid button.Click += delegate { SayHello(button); }; } - private void SayHello(Button button) + private void SayHello(Button button) + { + Server server = new Server { + Services = { Greeter.BindService(new GreeterImpl()) }, + Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } + }; + server.Start(); + + // use loopback on host machine: https://developer.android.com/studio/run/emulator-networking + //10.0.2.2:50051 + Channel channel = new Channel("localhost:50051", ChannelCredentials.Insecure); - // use loopback on host machine: https://developer.android.com/studio/run/emulator-networking - Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure); + var client = new Greeter.GreeterClient(channel); + string user = "Xamarin " + count; - var client = new Greeter.GreeterClient(channel); - string user = "Xamarin"; + var reply = client.SayHello(new HelloRequest { Name = user }); - var reply = client.SayHello(new HelloRequest { Name = user }); + button.Text = "Greeting: " + reply.Message; - button.Text = "Greeting: " + reply.Message; + channel.ShutdownAsync().Wait(); + server.ShutdownAsync().Wait(); + + count++; + } - channel.ShutdownAsync().Wait(); + class GreeterImpl : Greeter.GreeterBase + { + // Server side handler of the SayHello RPC + public override Task SayHello(HelloRequest request, ServerCallContext context) + { + return Task.FromResult(new HelloReply { Message = "Hello " + request.Name }); } + } } - - } diff --git a/examples/csharp/HelloworldXamarin/iOS/ViewController.cs b/examples/csharp/HelloworldXamarin/iOS/ViewController.cs index 33bb4a00e26..ba4618c0184 100644 --- a/examples/csharp/HelloworldXamarin/iOS/ViewController.cs +++ b/examples/csharp/HelloworldXamarin/iOS/ViewController.cs @@ -1,4 +1,6 @@ using System; +using System.Threading.Tasks; + using Grpc.Core; using Helloworld; @@ -8,6 +10,7 @@ namespace HelloworldXamarin.iOS { public partial class ViewController : UIViewController { + const int Port = 50051; int count = 1; public ViewController(IntPtr handle) : base(handle) @@ -33,20 +36,38 @@ namespace HelloworldXamarin.iOS // Release any cached data, images, etc that aren't in use. } - private string SayHello() + private string SayHello() + { + Server server = new Server { + Services = { Greeter.BindService(new GreeterImpl()) }, + Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } + }; + server.Start(); + + Channel channel = new Channel("localhost:50051", ChannelCredentials.Insecure); + + var client = new Greeter.GreeterClient(channel); + string user = "Xamarin " + count; - // use loopback on host machine: https://developer.android.com/studio/run/emulator-networking - Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure); + var reply = client.SayHello(new HelloRequest { Name = user }); - var client = new Greeter.GreeterClient(channel); - string user = "Xamarin"; + channel.ShutdownAsync().Wait(); + server.ShutdownAsync().Wait(); - var reply = client.SayHello(new HelloRequest { Name = user }); + count++; + + return "Greeting: " + reply.Message; + } - channel.ShutdownAsync().Wait(); - return "Greeting: " + reply.Message; + class GreeterImpl : Greeter.GreeterBase + { + // Server side handler of the SayHello RPC + public override Task SayHello(HelloRequest request, ServerCallContext context) + { + return Task.FromResult(new HelloReply { Message = "Hello " + request.Name }); } + } } }