Пример #1
0
        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);
        }
Пример #2
0
 protected Message(PossibleMessageTypes type)
 {
     _messageType = type;
 }