public static Message Create(byte[] receivedBytes) { Message result = null; if (receivedBytes != null && receivedBytes.Length >= 2) { ByteList bytes = new ByteList(receivedBytes); PossibleMessageTypes messageType = (PossibleMessageTypes)bytes.GetShort(); switch (messageType) { case PossibleMessageTypes.NewGame: result = new NewGameMessage(); break; case PossibleMessageTypes.GameDef: result = new GameDef(); break; case PossibleMessageTypes.Guess: result = new GuessMessage(); break; case PossibleMessageTypes.Answer: result = new AnswerMessage(); break; case PossibleMessageTypes.GetHint: result = new GetHintMessage(); break; case PossibleMessageTypes.Hint: result = new HintMessage(); break; case PossibleMessageTypes.Error: result = new ErrorMessage(); break; case PossibleMessageTypes.Exit: result = new ExitMessage(); break; case PossibleMessageTypes.Heartbeat: result = new HeartbeatMessage(); break; case PossibleMessageTypes.Ack: result = new AckMessage(); break; case PossibleMessageTypes.GetStatus: result = new GetStatusMessage(); break; case PossibleMessageTypes.Status: result = new StatusMessage(); break; } try { result?.Decode(bytes); } catch (Exception err) { Log.ErrorFormat("Cannot decode a {0} message", result?.GetType().Name); Log.ErrorFormat("Inner Error: {0}", err.Message); } } return(result); }
protected Message(PossibleMessageTypes type) { _messageType = type; }