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