public async IAsyncEnumerable <PlayerInfo> QueryAsync(PlayerInfoQuery query) { foreach (var sessionId in query.SessionIds) { var getPlayerQuery = new GetPlayerRequest { SessionId = sessionId }; var queryReply = await m_MessageQueueService .RequestAsync("session.get", getPlayerQuery.ToByteArray()) .ConfigureAwait(false); var data = GetPlayerResponse.Parser.ParseFrom(queryReply.Data); if (data.Player == null) { await m_LeaveRoomService .ExecuteAsync(new LeaveRoomCommand { SessionId = sessionId, Room = "test" }) .ConfigureAwait(false); } else { yield return(new PlayerInfo(data.Player.SessionId, data.Player.ConnectorId, data.Player.Name)); } } }
public Player GetPlayer(int id) { var request = new GetPlayerRequest { Id = id }; var response = SendRequest <GetPlayerRequest, GetPlayerResponse>(RequestType.GetPlayer, request); return(response.Player); }
public async Task <GetPlayerResponse> GetPlayerAsync(GetPlayerRequest request) { var response = ServiceMessageFactory <GetPlayerResponse> .CreateFrom(request); response.Player = cache.FirstOrDefault(i => i.Id == request.PlayerId); if (response.Player == null) { response.Errors = "Unable to find player."; } return(await Task.FromResult(response)); }
public async ValueTask <PlayerInfo?> GetAsync(PlayerInfoQuery query) { var getPlayerQuery = new GetPlayerRequest { SessionId = query.SessionId }; var queryReply = await m_MessageQueueService .RequestAsync("session.get", getPlayerQuery.ToByteArray()) .ConfigureAwait(false); var data = GetPlayerResponse.Parser.ParseFrom(queryReply.Data); if (data.Player != null) { return(new PlayerInfo(data.Player.SessionId, data.Player.ConnectorId, data.Player.Name)); } else { return(null); } }