示例#1
0
        public override Task <PlayerReply> GetPlayer(PlayerRequest request, Grpc.Core.ServerCallContext context)
        {
            _logger.LogInformation("Querying for player...");

            var Player = _Db.GetPlayers()
                         .Where(candidate => String.Equals(candidate.Name, request.Name, StringComparison.OrdinalIgnoreCase))
                         .FirstOrDefault();

            var wrapReply = new PlayerReply {
                Message = $"Could not find Player {request.Name}"
            };

            if (Player != null)
            {
                wrapReply = new PlayerReply {
                    Message = $"Found {request.Name}",
                    Player  = Player
                };
            }
            return(Task.FromResult(wrapReply));
        }
示例#2
0
        static async Task Main()
        {
            // This switch must be set before creating the GrpcChannel/HttpClient.
            AppContext.SetSwitch(
                "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            // using (var channel = GrpcChannel.ForAddress("http://*****:*****@"{countryData.CountryFull}
                                                                            {countryData.Message}
                                                                            with {countryData.Players.Count} registered players");
                    }
                }
                catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled)
                {
                    Console.WriteLine("Stream cancelled.");
                }

                var aCountry = await client.GetCountryAsync(new CountryRequest { Country = "Italy" });

                Console.WriteLine($"Seeking Italy; Found {aCountry.ToString()}");

                aCountry = await client.GetCountryAsync(new CountryRequest { Country = "No Country" });

                Console.WriteLine($"Seeking non existent country; Found {aCountry.ToString()}");

                #endregion


                #region Consume Players
                var playersClient = new PlayerDirectoryClient(channel);
                var playerCts     = new CancellationTokenSource(TimeSpan.FromSeconds(10));
                using (var playersStreamingCall = playersClient.GetPlayers(new Empty(), cancellationToken: playerCts.Token))
                {
                    try
                    {
                        await foreach (PlayersReply playerData in playersStreamingCall.ResponseStream.ReadAllAsync())
                        {
                            Console.WriteLine($@"{playerData.Message}
                            {playerData.Players.ToString()}");
                        }
                    }
                    catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled)
                    {
                        Console.WriteLine("Stream cancelled.");
                    }
                }

                PlayerReply aPlayer = await playersClient.GetPlayerAsync(new PlayerRequest { Name = "Hasan Sukur", Country = "Turkey" });

                Console.WriteLine($"Should have found: {aPlayer.ToString()}");


                PlayerReply notFound = await playersClient.GetPlayerAsync(new PlayerRequest { Name = "Idiakose O. Sunday" });

                Console.WriteLine($"Should have found me. Hehehehhe: {notFound.ToString()}");

                #endregion
            }
        }