use local server in XamarinHelloworld

pull/16194/head
Jan Tattermusch 7 years ago
parent da5452578a
commit 7ff80cfb5e
  1. 41
      examples/csharp/HelloworldXamarin/Droid/MainActivity.cs
  2. 37
      examples/csharp/HelloworldXamarin/iOS/ViewController.cs

@ -1,6 +1,7 @@
using Android.App; using Android.App;
using Android.Widget; using Android.Widget;
using Android.OS; using Android.OS;
using System.Threading.Tasks;
using Grpc.Core; using Grpc.Core;
using Helloworld; using Helloworld;
@ -9,7 +10,8 @@ namespace HelloworldXamarin.Droid
[Activity(Label = "HelloworldXamarin", MainLauncher = true, Icon = "@mipmap/icon")] [Activity(Label = "HelloworldXamarin", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity public class MainActivity : Activity
{ {
//int count = 1; const int Port = 50051;
int count = 1;
protected override void OnCreate(Bundle savedInstanceState) protected override void OnCreate(Bundle savedInstanceState)
{ {
@ -25,23 +27,40 @@ namespace HelloworldXamarin.Droid
button.Click += delegate { SayHello(button); }; 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 var client = new Greeter.GreeterClient(channel);
Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure); string user = "Xamarin " + count;
var client = new Greeter.GreeterClient(channel); var reply = client.SayHello(new HelloRequest { Name = user });
string user = "Xamarin";
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<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
} }
}
} }
} }

@ -1,4 +1,6 @@
using System; using System;
using System.Threading.Tasks;
using Grpc.Core; using Grpc.Core;
using Helloworld; using Helloworld;
@ -8,6 +10,7 @@ namespace HelloworldXamarin.iOS
{ {
public partial class ViewController : UIViewController public partial class ViewController : UIViewController
{ {
const int Port = 50051;
int count = 1; int count = 1;
public ViewController(IntPtr handle) : base(handle) public ViewController(IntPtr handle) : base(handle)
@ -33,20 +36,38 @@ namespace HelloworldXamarin.iOS
// Release any cached data, images, etc that aren't in use. // 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 var reply = client.SayHello(new HelloRequest { Name = user });
Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel); channel.ShutdownAsync().Wait();
string user = "Xamarin"; 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<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
} }
}
} }
} }

Loading…
Cancel
Save