| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | #region Copyright notice and license// Copyright 2018 The gRPC Authors//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at////     http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.#endregionusing System;using System.Threading.Tasks;using Grpc.Core;using Helloworld;using UIKit;namespace HelloworldXamarin.iOS{    public partial class ViewController : UIViewController    {        const int Port = 30051;        int count = 1;        public ViewController(IntPtr handle) : base(handle)        {        }        public override void ViewDidLoad()        {            base.ViewDidLoad();            // Perform any additional setup after loading the view, typically from a nib.            Button.AccessibilityIdentifier = "myButton";            Button.TouchUpInside += delegate            {                var title = SayHello();                Button.SetTitle(title, UIControlState.Normal);            };        }        public override void DidReceiveMemoryWarning()        {            base.DidReceiveMemoryWarning();            // Release any cached data, images, etc that aren't in use.		        }        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:30051", ChannelCredentials.Insecure);            var client = new Greeter.GreeterClient(channel);            string user = "Xamarin " + count;            var reply = client.SayHello(new HelloRequest { Name = user });            channel.ShutdownAsync().Wait();            server.ShutdownAsync().Wait();            count++;            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 });            }        }    }}
 |