예제 #1
0
        protected override async Task DoReceiveMessageAsync(NetworkMessage message)
        {
            if (message is SmgpMessageLoginResponse)
            {
                await this.DoReceiveLoginResponseAsync(message as SmgpMessageLoginResponse);
            }
            else if (message is SmgpMessageSubmitResponse)
            {
                await this.DoReceiveSubmitResponseAsync(message as SmgpMessageSubmitResponse);
            }
            else if (message is SmgpMessageDeliver)
            {
                await this.DoReceiveDeliverAsync(message as SmgpMessageDeliver);
            }
            else if (message is SmgpMessageActiveTest)
            {
                var m = message as SmgpMessageActiveTest;
                var r = new SmgpMessageActiveTestResponse()
                {
                    SequenceId = m.SequenceId
                };
                await this.SendAsync(r);
            }
            else if (message is SmgpMessageExit)
            {
                var m = message as SmgpMessageExit;
                var r = new SmgpMessageExitResponse()
                {
                    SequenceId = m.SequenceId
                };
                await this.SendAsync(r);

                this.Terminate();
            }
            else
            {
                await Task.Delay(0);
            }
        }
예제 #2
0
        public NetworkMessage CreateNetworkMessage(BinaryReader reader)
        {
            uint         byteCount  = reader.NetworkReadUInt32();
            SmgpCommands command    = (SmgpCommands)reader.NetworkReadUInt32();
            uint         sequenceId = reader.NetworkReadUInt32();

            SmgpMessage message = null;

            switch (command)
            {
            case SmgpCommands.Login:
                message = new SmgpMessageLogin();
                break;

            case SmgpCommands.LoginResponse:
                message = new SmgpMessageLoginResponse();
                break;

            case SmgpCommands.Submit:
                message = new SmgpMessageSubmit();
                break;

            case SmgpCommands.SubmitResponse:
                message = new SmgpMessageSubmitResponse();
                break;

            case SmgpCommands.Deliver:
                message = new SmgpMessageDeliver();
                break;

            case SmgpCommands.DeliverResponse:
                message = new SmgpMessageDeliverResponse();
                break;

            case SmgpCommands.ActiveTest:
                message = new SmgpMessageActiveTest();
                break;

            case SmgpCommands.ActiveTestResponse:
                message = new SmgpMessageActiveTestResponse();
                break;

            case SmgpCommands.Exit:
                message = new SmgpMessageExit();
                break;

            case SmgpCommands.ExitResponse:
                message = new SmgpMessageExitResponse();
                break;

            default:
                message = new SmgpMessage();
                break;
            } //end switch

            if (message != null)
            {
                message.Command    = command;
                message.ByteCount  = byteCount;
                message.SequenceId = sequenceId;
                message.NetworkRead(reader);
            }
            return(message);
        }