Ejemplo n.º 1
0
        protected bool SendToLobbyConnection(uint connection, PayloadPrefix message)
        {
            NetworkProcessor processor = Program.GetLobbyProcessor(connection);

            if (processor == null)
            {
                return(false);
            }

            MemoryStream  stream        = new MemoryStream();
            BinaryWriter  writer        = new BinaryWriter(stream);
            PayloadWriter payloadWriter = new PayloadWriter(writer);

            message.Serialize(payloadWriter);

            Program.LogDebug($" --- Payload sending to {connection}: {(Payloads.Types)message.Type2} ---");
            message.Serialize(Logger);

            processor.SendReply(MessageContainer.Types.ApplicationMessage, stream);

            writer.Close();
            stream.Close();

            return(false);
        }
Ejemplo n.º 2
0
        protected virtual bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            Program.LogDebug($" --- Payload received: {payloadType} ---");
            payload.Serialize(Logger);

            switch (payloadType)
            {
            case Payloads.Types.VersionCheck:
                HandleVersionCheck((VersionCheck)payload, writer);
                return(true);

            case Payloads.Types.Login:
                HandleLogin((Login)payload, writer);
                return(true);

            case Payloads.Types.RegisterUser:
                HandleRegisterUser((RegisterUser)payload, writer);
                return(true);

            case Payloads.Types.LoginUser:
                HandleLoginUser((LoginUser)payload, writer);
                return(true);

            case Payloads.Types.LoginServer:
                HandleLoginServer((LoginServer)payload, writer);
                return(true);

            default:
                return(false);
            }
        }
Ejemplo n.º 3
0
        protected void SendReply(PayloadWriter writer, PayloadPrefix payload)
        {
            payload.Serialize(writer);
            SendReply(MessageContainer.Types.ApplicationMessage, writer.BaseStream);

            Program.LogDebug($" --- Payload sending: {(Payloads.Types)payload.Type2} ---");
            payload.Serialize(Logger);
        }
Ejemplo n.º 4
0
        protected sealed override void HandleMessage(BinaryReader reader, BinaryWriter writer)
        {
            reader.BaseStream.Seek(0, SeekOrigin.Begin);

            PayloadReader payloadReader = new PayloadReader(reader);
            PayloadWriter payloadWriter = new PayloadWriter(writer);

            PayloadPrefix prefix = new PayloadPrefix();

            prefix.Serialize(payloadReader);


            if (prefix.Magic == PayloadPrefix.PayloadMagic)
            {
                if (prefix.Type1 != prefix.Type2)
                {
                    Program.Log($" Corrupt payload type, first is {prefix.Type1:X04} but second is {prefix.Type2:X04}");
                }

                Payloads.Types payloadType = (Payloads.Types)prefix.Type2;
                PayloadPrefix  payload     = Payloads.CreatePayload(payloadType);

                reader.BaseStream.Seek(0, SeekOrigin.Begin);
                payload.Serialize(payloadReader);

                HandlePayloadType(payloadType, payload, payloadWriter);
            }
            else if (prefix.Magic == ChatPayloadPrefix.PayloadMagic)
            {
                if (prefix.Type1 != 0)
                {
                    Program.Log($" Corrupt payload chatTypes, is {prefix.Type1:X04} but expected 0");
                }

                ChatPayloads.ChatTypes chatPayloadType = (ChatPayloads.ChatTypes)prefix.Type2;
                ChatPayloadPrefix      chatPayload     = ChatPayloads.CreateChatPayload(chatPayloadType);

                reader.BaseStream.Seek(0, SeekOrigin.Begin);
                chatPayload.Serialize(payloadReader);

                HandleChatPayloadType(chatPayloadType, chatPayload, payloadWriter);
            }
            else
            {
                Program.Log($" Incorrect payload magic, is {prefix.Magic:X04} but should be {PayloadPrefix.PayloadMagic:X04}");
            }
        }
Ejemplo n.º 5
0
        protected sealed override bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            if (base.HandlePayloadType(payloadType, payload, writer))
            {
                return(true);
            }

            switch (payloadType)
            {
            case Payloads.Types.LoginChat:
                HandleLoginChat((LoginChat)payload, writer);
                return(true);

            case Payloads.Types.VerifyChatLogin:
                HandleVerifyChatLogin((VerifyChatLogin)payload, writer);
                return(true);

            default:
                return(false);
            }
        }
Ejemplo n.º 6
0
        protected sealed override bool HandlePayloadType(Payloads.Types payloadType, PayloadPrefix payload, PayloadWriter writer)
        {
            if (base.HandlePayloadType(payloadType, payload, writer))
            {
                return(true);
            }

            switch (payloadType)
            {
            case Payloads.Types.RegisterNickname:
                HandleRegisterNickname((RegisterNickname)payload, writer);
                return(true);

            case Payloads.Types.ConfirmNickname:
                HandleConfirmNickname((ConfirmNickname)payload, writer);
                return(true);

            case Payloads.Types.GetCDKeys:
                HandleGetCdKeys((GetCDKeys)payload, writer);
                return(true);

            case Payloads.Types.GetWelcomeMsg:
                HandleGetWelcomeMsg((GetWelcomeMsg)payload, writer);
                return(true);

            case Payloads.Types.GetUserInfo:
                HandleGetUserInfo((GetUserInfo)payload, writer);
                return(true);

            case Payloads.Types.GetPlayerInfo:
                HandleGetCharacterInfo((GetPlayerInfo)payload, writer);
                return(true);

            case Payloads.Types.GetChatServer:
                HandleGetChatServer((GetChatServer)payload, writer);
                return(true);

            case Payloads.Types.SelectNickname:
                HandleSelectNickname((SelectNickname)payload, writer);
                return(true);

            case Payloads.Types.RegisterServer:
                HandleRegisterServer((RegisterServer)payload, writer);
                return(true);

            case Payloads.Types.GetServers:
                HandleGetServers((GetServers)payload, writer);
                return(true);

            case Payloads.Types.StopServerUpdates:
                HandleStopServerUpdates((StopServerUpdates)payload, writer);
                return(true);

            case Payloads.Types.UnknownType056:
                HandlePayload056((Payload56)payload, writer);
                return(true);

            case Payloads.Types.UnknownType157:
                HandlePayload157((Payload157)payload, writer);
                return(true);

            case Payloads.Types.ConnectToServer:
                HandleConnectToServer((ConnectToServer)payload, writer);
                return(true);

            case Payloads.Types.UpdateServerInfo:
                HandleUpdateServerInfo((UpdateServerInfo)payload, writer);
                return(true);

            default:
                return(false);
            }
        }