| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | 
							- using Grpc.Core;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- namespace examples
 
- {
 
-     class Program
 
-     {
 
-         /// <summary>
 
-         /// Sample client code that makes gRPC calls to the server.
 
-         /// </summary>
 
-         public class RouteGuideClient
 
-         {
 
-             readonly RouteGuide.IRouteGuideClient client;
 
-             public RouteGuideClient(RouteGuide.IRouteGuideClient client)
 
-             {
 
-                 this.client = client;
 
-             }
 
-             /// <summary>
 
-             /// Blocking unary call example.  Calls GetFeature and prints the response.
 
-             /// </summary>
 
-             public void GetFeature(int lat, int lon)
 
-             {
 
-                 try
 
-                 {
 
-                     Log("*** GetFeature: lat={0} lon={1}", lat, lon);
 
-                     Point request = Point.CreateBuilder().SetLatitude(lat).SetLongitude(lon).Build();
 
-                     
 
-                     Feature feature = client.GetFeature(request);
 
-                     if (RouteGuideUtil.Exists(feature))
 
-                     {
 
-                         Log("Found feature called \"{0}\" at {1}, {2}",
 
-                             feature.Name,
 
-                             RouteGuideUtil.GetLatitude(feature.Location),
 
-                             RouteGuideUtil.GetLongitude(feature.Location));
 
-                     }
 
-                     else
 
-                     {
 
-                         Log("Found no feature at {0}, {1}",
 
-                             RouteGuideUtil.GetLatitude(feature.Location),
 
-                             RouteGuideUtil.GetLongitude(feature.Location));
 
-                     }
 
-                 }
 
-                 catch (RpcException e)
 
-                 {
 
-                     Log("RPC failed " + e);
 
-                     throw e;
 
-                 }
 
-             }
 
-   
 
-             /// <summary>
 
-             /// Server-streaming example. Calls listFeatures with a rectangle of interest. Prints each response feature as it arrives.
 
-             /// </summary>
 
-             public async Task ListFeatures(int lowLat, int lowLon, int hiLat, int hiLon)
 
-             {
 
-                 try
 
-                 {
 
-                     Log("*** ListFeatures: lowLat={0} lowLon={1} hiLat={2} hiLon={3}", lowLat, lowLon, hiLat,
 
-                         hiLon);
 
-                     Rectangle request =
 
-                         Rectangle.CreateBuilder()
 
-                             .SetLo(Point.CreateBuilder().SetLatitude(lowLat).SetLongitude(lowLon).Build())
 
-                             .SetHi(Point.CreateBuilder().SetLatitude(hiLat).SetLongitude(hiLon).Build()).Build();
 
-                     
 
-                     using (var call = client.ListFeatures(request))
 
-                     {
 
-                         StringBuilder responseLog = new StringBuilder("Result: ");
 
-                         while (await call.ResponseStream.MoveNext())
 
-                         {
 
-                             Feature feature = call.ResponseStream.Current;
 
-                             responseLog.Append(feature.ToString());
 
-                         }
 
-                         Log(responseLog.ToString());
 
-                     }
 
-                 }
 
-                 catch (RpcException e)
 
-                 {
 
-                     Log("RPC failed " + e); 
 
-                     throw e;
 
-                 }
 
-             }
 
-             /// <summary>
 
-             /// Client-streaming example. Sends numPoints randomly chosen points from features 
 
-             /// with a variable delay in between. Prints the statistics when they are sent from the server.
 
-             /// </summary>
 
-             public async Task RecordRoute(List<Feature> features, int numPoints)
 
-             {
 
-                 try
 
-                 {
 
-                     Log("*** RecordRoute");
 
-                     using (var call = client.RecordRoute())
 
-                     {
 
-                         // Send numPoints points randomly selected from the features list.
 
-                         StringBuilder numMsg = new StringBuilder();
 
-                         Random rand = new Random();
 
-                         for (int i = 0; i < numPoints; ++i)
 
-                         {
 
-                             int index = rand.Next(features.Count);
 
-                             Point point = features[index].Location;
 
-                             Log("Visiting point {0}, {1}", RouteGuideUtil.GetLatitude(point),
 
-                                 RouteGuideUtil.GetLongitude(point));
 
-                             await call.RequestStream.WriteAsync(point);
 
-                             // A bit of delay before sending the next one.
 
-                             await Task.Delay(rand.Next(1000) + 500);    
 
-                         }
 
-                         await call.RequestStream.CompleteAsync();
 
-                         RouteSummary summary = await call.Result;
 
-                         Log("Finished trip with {0} points. Passed {1} features. "
 
-                             + "Travelled {2} meters. It took {3} seconds.", summary.PointCount,
 
-                             summary.FeatureCount, summary.Distance, summary.ElapsedTime);
 
-                         Log("Finished RecordRoute");
 
-                     }
 
-                 }
 
-                 catch (RpcException e)
 
-                 {
 
-                     Log("RPC failed", e);
 
-                     throw e;
 
-                 }
 
-             }
 
-             /// <summary>
 
-             /// Bi-directional streaming example. Send some chat messages, and print any
 
-             /// chat messages that are sent from the server.
 
-             /// </summary>
 
-             public async Task RouteChat()
 
-             {
 
-                 try
 
-                 {
 
-                     Log("*** RouteChat");
 
-                     var requests =
 
-                         new List<RouteNote> { NewNote("First message", 0, 0), NewNote("Second message", 0, 1), NewNote("Third message", 1, 0), NewNote("Fourth message", 1, 1) };
 
-                     using (var call = client.RouteChat())
 
-                     {
 
-                         var responseReaderTask = Task.Run(async () =>
 
-                         {
 
-                             while (await call.ResponseStream.MoveNext())
 
-                             {
 
-                                 var note = call.ResponseStream.Current;
 
-                                 Log("Got message \"{0}\" at {1}, {2}", note.Message, 
 
-                                     note.Location.Latitude, note.Location.Longitude);
 
-                             }
 
-                         });
 
-                         foreach (RouteNote request in requests)
 
-                         {
 
-                             Log("Sending message \"{0}\" at {1}, {2}", request.Message,
 
-                                 request.Location.Latitude, request.Location.Longitude);
 
-                             await call.RequestStream.WriteAsync(request);
 
-                         }
 
-                         await call.RequestStream.CompleteAsync();
 
-                         await responseReaderTask;
 
-                         Log("Finished RouteChat");
 
-                     }
 
-                 }
 
-                 catch (RpcException e)
 
-                 {
 
-                     Log("RPC failed", e);
 
-                     throw e;
 
-                 }
 
-             }
 
-             private void Log(string s, params object[] args)
 
-             {
 
-                 Console.WriteLine(string.Format(s, args));
 
-             }
 
-             private void Log(string s)
 
-             {
 
-                 Console.WriteLine(s);
 
-             }
 
-             private RouteNote NewNote(string message, int lat, int lon)
 
-             {
 
-                 return RouteNote.CreateBuilder().SetMessage(message).SetLocation(
 
-                     Point.CreateBuilder().SetLatitude(lat).SetLongitude(lat).Build()).Build();
 
-             }
 
-         }
 
-         static void Main(string[] args)
 
-         {
 
-             GrpcEnvironment.Initialize();
 
-             using (Channel channel = new Channel("127.0.0.1:50052"))
 
-             {
 
-                 var client = new RouteGuideClient(RouteGuide.NewStub(channel));
 
-                 // Looking for a valid feature
 
-                 client.GetFeature(409146138, -746188906);
 
-                 // Feature missing.
 
-                 client.GetFeature(0, 0);
 
-                 // Looking for features between 40, -75 and 42, -73.
 
-                 client.ListFeatures(400000000, -750000000, 420000000, -730000000).Wait();
 
-                 // Record a few randomly selected points from the features file.
 
-                 client.RecordRoute(RouteGuideUtil.ParseFeatures(RouteGuideUtil.DefaultFeaturesFile), 10).Wait();
 
-                 // Send and receive some notes.
 
-                 client.RouteChat().Wait();
 
-             }
 
-             GrpcEnvironment.Shutdown();
 
-         }
 
-     }
 
- }
 
 
  |