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 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.º 3
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.º 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}");
            }
        }