public static AckMessage Decode(byte[] bytes) { AckMessage message = null; if (bytes != null) { message = new AckMessage(); MemoryStream memoryStream = new MemoryStream(bytes); message.msgId = ReadMessageId(memoryStream); message.convId = ReadMessageId(memoryStream); ReadShort(memoryStream); message.GameId = ReadShort(memoryStream); } return(message); }
public static Message DecodeMessage(byte[] messageByteStream) { MemoryStream memoryStream = new MemoryStream(messageByteStream); Message message = null; ReadMessageId(memoryStream); ReadMessageId(memoryStream); short messageType = ReadShort(memoryStream); try { switch (messageType) { case REQUEST_GAME: message = RequestGameMessage.Decode(messageByteStream); break; case GAME_INFO: message = GameInfoMessage.Decode(messageByteStream); break; case START_GAME: message = StartGameMessage.Decode(messageByteStream); break; case GAME_STATE_UPDATE: message = GameStateUpdateMessage.Decode(messageByteStream); break; case ROLL: message = RollMessage.Decode(messageByteStream); break; case TRADE_REQUEST: message = TradeRequestMessage.Decode(messageByteStream); break; case TRADE_REPLY: message = TradeReplyMessage.Decode(messageByteStream); break; case BUY: message = BuyMessage.Decode(messageByteStream); break; case END_TURN: message = EndTurnMessage.Decode(messageByteStream); break; case END_GAME: message = EndGameMessage.Decode(messageByteStream); break; case ACK: message = AckMessage.Decode(messageByteStream); break; case ERROR: message = ErrorMessage.Decode(messageByteStream); break; default: break; } return(message); } catch { return(null); } }
public static Message decoder(byte[] bytes) { short MT = Message.decodeMessageType(bytes); Array.Copy(bytes, 2, bytes, 0, bytes.Length - 2); switch (MT) { case 1: var gmJoinLobby = new GMJoinLobbyMessage(); gmJoinLobby.decode(bytes); return(gmJoinLobby); case 2: var playerJoinLobby = new PlayerJoinLobbyMessage(); playerJoinLobby.decode(bytes); return(playerJoinLobby); case 3: var assigIdMessage = new AssignIdMessage(); assigIdMessage.decode(bytes); return(assigIdMessage); case 4: var heartbeat = new HeartbeatMessage(); heartbeat.decode(bytes); return(heartbeat); case 5: var ack = new AckMessage(); ack.decode(bytes); return(ack); case 6: var playerId = new PlayerIdMessage(); playerId.decode(bytes); return(playerId); case 7: var gameId = new GameIdMessage(); gameId.decode(bytes); return(gameId); case 8: var board = new BoardMessage(); board.decode(bytes); return(board); case 9: var shot = new ShotMessage(); shot.decode(bytes); return(shot); case 10: var result = new ResultMessage(); result.decode(bytes); return(result); case 11: var endGameResult = new EndGameResultMessage(); endGameResult.decode(bytes); return(endGameResult); case 12: var errorMessage = new ErrorMessage(); errorMessage.decode(bytes); return(errorMessage); default: throw new Exception("Could not read messageType " + MT + " in switch statement"); } }