Exemplo n.º 1
0
        /// <summary>
        /// Gets all features contained within the given bounding rectangle.
        /// </summary>
        public override async Task ListFeatures(RouteGuide.Rectangle request, IServerStreamWriter <RouteGuide.Feature> responseStream, ServerCallContext context)
        {
            var responses = features.FindAll((feature) => feature.Exists() && request.Contains(feature.Location));

            foreach (var response in responses)
            {
                await responseStream.WriteAsync(response);
            }
        }
Exemplo n.º 2
0
        /// <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);

                RouteGuide.Rectangle request = new RouteGuide.Rectangle
                {
                    Lo = new RouteGuide.Point {
                        Latitude = lowLat, Longitude = lowLon
                    },
                    Hi = new RouteGuide.Point {
                        Latitude = hiLat, Longitude = hiLon
                    }
                };

                using (var call = client.ListFeatures(request))
                {
                    var           responseStream = call.ResponseStream;
                    StringBuilder responseLog    = new StringBuilder("Result: ");

                    while (await responseStream.MoveNext())
                    {
                        RouteGuide.Feature feature = responseStream.Current;
                        responseLog.Append(feature.ToString());
                    }
                    Log(responseLog.ToString());
                }
            }
            catch (RpcException e)
            {
                Log("RPC failed " + e);
                throw;
            }
        }