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 async ValueTask ExecuteAsync(UnregisterSessionCommand command) { var loginInfo = new UnregisterRequest { SessionId = command.SessionId }; await m_MessageQueueService.RequestAsync( "session.unregister", loginInfo.ToByteArray()).ConfigureAwait(false); }
public async ValueTask ExecuteAsync(JoinRoomCommand command) { var request = new JoinRoomRequest { SessionId = command.SessionId, Room = command.Room }; await m_MessageQueueService.RequestAsync( "room.join", request.ToByteArray()).ConfigureAwait(false); }
public async ValueTask ExecuteAsync(LeaveRoomCommand command) { var request = new LeaveRoomRequest { SessionId = command.SessionId, Room = command.Room ?? string.Empty }; await m_MessageQueueService .RequestAsync("room.leave", request.ToByteArray()) .ConfigureAwait(false); }
public async ValueTask <string?> GetAsync(GetRoomBySessionidQuery query) { var request = new GetRoomBySessionIdRequest { SessionId = query.SessionId }; var response = await m_MessageQueueService.RequestAsync( "room.session.get", request.ToByteArray()).ConfigureAwait(false); var getRoomResponse = GetRoomBySessionIdResponse.Parser.ParseFrom(response.Data); return(getRoomResponse.Room); }
public async IAsyncEnumerable <PlayerInfo> QueryAsync(ListPlayerQuery query) { var roomQuery = new RoomSessionsRequest { Room = query.Room }; var result = await m_MessageQueueService.RequestAsync("room.query", roomQuery.ToByteArray()); var queryResponse = RoomSessionsResponse.Parser.ParseFrom(result.Data); foreach (var player in queryResponse.Players) { yield return(new PlayerInfo(player.SessionId, player.ConnectorId, player.Name)); } }
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); } }