aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp3
-rw-r--r--src/server/game/Handlers/AuthHandler.cpp12
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp18
-rw-r--r--src/server/game/Server/Packet.h10
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp6
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.h2
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/AuthenticationPackets.h4
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp16
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h31
-rw-r--r--src/server/game/Server/Packets/SystemPackets.cpp10
-rw-r--r--src/server/game/Server/Packets/SystemPackets.h4
-rw-r--r--src/server/game/Server/WorldSession.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h2
-rw-r--r--src/server/game/Server/WorldSocket.cpp8
15 files changed, 57 insertions, 77 deletions
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index ca52eeb348f..e35baca3efc 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -78,8 +78,7 @@ void WorldSession::SendAuctionCommandResult(AuctionEntry* auction, uint32 action
auctionCommandResult.InitializeAuction(auction);
auctionCommandResult.Action = action;
auctionCommandResult.ErrorCode = errorCode;
- auctionCommandResult.Write();
- SendPacket(&auctionCommandResult.GetWorldPacket());
+ SendPacket(auctionCommandResult.Write());
}
//this function sends notification, if bidder is online
diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp
index 8cde824c26e..fee7ad2542f 100644
--- a/src/server/game/Handlers/AuthHandler.cpp
+++ b/src/server/game/Handlers/AuthHandler.cpp
@@ -44,8 +44,7 @@ void WorldSession::SendAuthResponse(uint8 code, bool queued, uint32 queuePos)
response.SuccessInfo.value.AvailableRaces = &sObjectMgr->GetRaceExpansionRequirements();
}
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
void WorldSession::SendAuthWaitQue(uint32 position)
@@ -66,8 +65,7 @@ void WorldSession::SendAuthWaitQue(uint32 position)
response.Result = AUTH_WAIT_QUEUE;
}
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
void WorldSession::SendClientCacheVersion(uint32 version)
@@ -84,8 +82,7 @@ void WorldSession::SendSetTimeZoneInformation()
packet.ServerTimeTZ = "Europe/Paris";
packet.GameTimeTZ = "Europe/Paris";
- packet.Write();
- SendPacket(&packet.GetWorldPacket());
+ SendPacket(packet.Write());
}
void WorldSession::SendFeatureSystemStatusGlueScreen()
@@ -96,6 +93,5 @@ void WorldSession::SendFeatureSystemStatusGlueScreen()
features.CharUndeleteEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_CHARACTER_UNDELETE_ENABLED);
features.BpayStoreEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_BPAY_STORE_ENABLED);
- features.Write();
- SendPacket(&features.GetWorldPacket());
+ SendPacket(features.Write());
}
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 8593b4352c3..e3192efff29 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -250,8 +250,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result)
while (result->NextRow());
}
- charEnum.Write();
- SendPacket(&charEnum.GetWorldPacket());
+ SendPacket(charEnum.Write());
}
void WorldSession::HandleCharEnumOpcode(WorldPacket& /*recvData*/)
@@ -294,8 +293,7 @@ void WorldSession::HandleCharUndeleteEnum(PreparedQueryResult result)
while (result->NextRow());
}
- charEnum.Write();
- SendPacket(&charEnum.GetWorldPacket());
+ SendPacket(charEnum.Write());
}
void WorldSession::HandleCharUndeleteEnumOpcode(WorldPacket& /*recvData*/)
@@ -2441,8 +2439,7 @@ void WorldSession::SendCharCreate(ResponseCodes result)
WorldPackets::Character::CharacterCreateResponse response;
response.Code = result;
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
void WorldSession::SendCharDelete(ResponseCodes result)
@@ -2450,8 +2447,7 @@ void WorldSession::SendCharDelete(ResponseCodes result)
WorldPackets::Character::CharacterDeleteResponse response;
response.Code = result;
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
void WorldSession::SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const& renameInfo)
@@ -2526,8 +2522,7 @@ void WorldSession::SendUndeleteCooldownStatusResponse(uint32 currentCooldown, ui
response.MaxCooldown = maxCooldown;
response.CurrentCooldown = currentCooldown;
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
void WorldSession::SendUndeleteCharacterResponse(CharacterUndeleteResult result, WorldPackets::Character::CharacterUndeleteInfo const* undeleteInfo)
@@ -2536,6 +2531,5 @@ void WorldSession::SendUndeleteCharacterResponse(CharacterUndeleteResult result,
response.UndeleteInfo = undeleteInfo;
response.Result = result;
- response.Write();
- SendPacket(&response.GetWorldPacket());
+ SendPacket(response.Write());
}
diff --git a/src/server/game/Server/Packet.h b/src/server/game/Server/Packet.h
index e7baf830944..ba26b7de82f 100644
--- a/src/server/game/Server/Packet.h
+++ b/src/server/game/Server/Packet.h
@@ -29,10 +29,9 @@ namespace WorldPackets
Packet(Packet const& right) = delete;
Packet& operator=(Packet const& right) = delete;
- virtual void Write() = 0;
+ virtual WorldPacket const* Write() = 0;
virtual void Read() = 0;
- WorldPacket& GetWorldPacket() { return _worldPacket; }
size_t GetSize() const { return _worldPacket.size(); }
protected:
@@ -54,7 +53,12 @@ namespace WorldPackets
public:
ClientPacket(WorldPacket&& packet) : Packet(std::move(packet)) { }
- void Write() override final { ASSERT(!"Write not allowed for client packets."); }
+ WorldPacket const* Write() override final
+ {
+ ASSERT(!"Write not allowed for client packets.");
+ // Shut up some compilers
+ return nullptr;
+ }
};
}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index e8fd4dfce14..56fa0ed396b 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -33,7 +33,7 @@ void WorldPackets::AuctionHousePackets::AuctionCommandResult::InitializeAuction(
}
}
-void WorldPackets::AuctionHousePackets::AuctionCommandResult::Write()
+WorldPacket const* WorldPackets::AuctionHousePackets::AuctionCommandResult::Write()
{
_worldPacket << uint32(AuctionId);
_worldPacket << uint32(Action);
@@ -54,4 +54,6 @@ void WorldPackets::AuctionHousePackets::AuctionCommandResult::Write()
_worldPacket << uint64(Bid ? AuctionOutBid : 0);
break;
}
-} \ No newline at end of file
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h
index 044810ced6c..3713b51e6ef 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.h
+++ b/src/server/game/Server/Packets/AuctionHousePackets.h
@@ -41,7 +41,7 @@ namespace WorldPackets
*/
void InitializeAuction(AuctionEntry* auction);
- void Write() override;
+ WorldPacket const* Write() override;
uint32 AuctionId = 0; ///< the id of the auction that triggered this notification
uint32 Action = 0; ///< the type of action that triggered this notification. Possible values are @ref AuctionAction
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp
index 0f188e51c42..2abc68ab90d 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.cpp
+++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp
@@ -17,11 +17,12 @@
#include "AuthenticationPackets.h"
-void WorldPackets::Auth::AuthChallenge::Write()
+WorldPacket const* WorldPackets::Auth::AuthChallenge::Write()
{
_worldPacket << uint32(Challenge);
_worldPacket.append(DosChallenge, 8);
_worldPacket << uint8(DosZeroBits);
+ return &_worldPacket;
}
void WorldPackets::Auth::AuthSession::Read()
@@ -55,7 +56,7 @@ WorldPackets::Auth::AuthResponse::AuthResponse()
SuccessInfo.HasValue = false;
}
-void WorldPackets::Auth::AuthResponse::Write()
+WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
{
_worldPacket << uint8(Result);
_worldPacket.WriteBit(SuccessInfo.HasValue);
@@ -135,4 +136,5 @@ void WorldPackets::Auth::AuthResponse::Write()
}
_worldPacket.FlushBits();
+ return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h
index 209300e023e..d527934bffe 100644
--- a/src/server/game/Server/Packets/AuthenticationPackets.h
+++ b/src/server/game/Server/Packets/AuthenticationPackets.h
@@ -31,7 +31,7 @@ namespace WorldPackets
public:
AuthChallenge() : ServerPacket(SMSG_AUTH_CHALLENGE, 4 + 32 + 1), Challenge(0) { }
- void Write() override;
+ WorldPacket const* Write() override;
uint32 Challenge;
uint32 DosChallenge[8]; ///< Encryption seeds
@@ -126,7 +126,7 @@ namespace WorldPackets
AuthResponse();
- void Write() override;
+ WorldPacket const* Write() override;
Optional<AuthSuccessInfo> SuccessInfo; ///< contains the packet data in case that it has account information (It is never set when WaitInfo is set), otherwise its contents are undefined.
Optional<AuthWaitInfo> WaitInfo; ///< contains the queue wait information in case the account is in the login queue.
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index 095eb452e2b..a5faef9a483 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -125,7 +125,7 @@ WorldPackets::Character::CharEnumResult::CharacterInfo::CharacterInfo(Field* fie
WorldPackets::Character::CharEnumResult::CharEnumResult()
: ServerPacket(SMSG_CHAR_ENUM) { }
-void WorldPackets::Character::CharEnumResult::Write()
+WorldPacket const* WorldPackets::Character::CharEnumResult::Write()
{
_worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + FactionChangeRestrictions.size() * sizeof(RestrictedFactionChangeRuleInfo));
@@ -181,6 +181,8 @@ void WorldPackets::Character::CharEnumResult::Write()
_worldPacket << int32(rule.Mask);
_worldPacket << uint8(rule.Race);
}
+
+ return &_worldPacket;
}
WorldPackets::Character::CharacterCreate::CharacterCreate(WorldPacket&& packet)
@@ -211,9 +213,10 @@ void WorldPackets::Character::CharacterCreate::Read()
WorldPackets::Character::CharacterCreateResponse::CharacterCreateResponse()
: ServerPacket(SMSG_CHAR_CREATE, 1) { }
-void WorldPackets::Character::CharacterCreateResponse::Write()
+WorldPacket const* WorldPackets::Character::CharacterCreateResponse::Write()
{
_worldPacket << uint8(Code);
+ return &_worldPacket;
}
WorldPackets::Character::CharacterDelete::CharacterDelete(WorldPacket&& packet)
@@ -230,9 +233,10 @@ void WorldPackets::Character::CharacterDelete::Read()
WorldPackets::Character::CharacterDeleteResponse::CharacterDeleteResponse()
: ServerPacket(SMSG_CHAR_DELETE, 1) { }
-void WorldPackets::Character::CharacterDeleteResponse::Write()
+WorldPacket const* WorldPackets::Character::CharacterDeleteResponse::Write()
{
_worldPacket << uint8(Code);
+ return &_worldPacket;
}
WorldPackets::Character::UndeleteCharacter::UndeleteCharacter(WorldPacket&& packet)
@@ -251,22 +255,24 @@ void WorldPackets::Character::UndeleteCharacter::Read()
WorldPackets::Character::UndeleteCharacterResponse::UndeleteCharacterResponse()
: ServerPacket(SMSG_UNDELETE_CHARACTER_RESPONSE, 26) { }
-void WorldPackets::Character::UndeleteCharacterResponse::Write()
+WorldPacket const* WorldPackets::Character::UndeleteCharacterResponse::Write()
{
ASSERT(UndeleteInfo);
_worldPacket << int32(UndeleteInfo->ClientToken);
_worldPacket << uint32(Result);
_worldPacket << UndeleteInfo->CharacterGuid;
+ return &_worldPacket;
}
WorldPackets::Character::UndeleteCooldownStatusResponse::UndeleteCooldownStatusResponse()
: ServerPacket(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, 9) { }
-void WorldPackets::Character::UndeleteCooldownStatusResponse::Write()
+WorldPacket const* WorldPackets::Character::UndeleteCooldownStatusResponse::Write()
{
_worldPacket.WriteBit(OnCooldown);
_worldPacket << uint32(MaxCooldown);
_worldPacket << uint32(CurrentCooldown);
+ return &_worldPacket;
}
WorldPackets::Character::PlayerLogin::PlayerLogin(WorldPacket&& packet)
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index 135d53f8e8c..8d07769ed5a 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -27,11 +27,6 @@ namespace WorldPackets
{
struct CharacterCreateInfo
{
- friend class CharacterCreate;
- friend class Player;
- friend class WorldSession;
-
- protected:
/// User specified variables
uint8 Race = 0;
uint8 Class = 0;
@@ -51,19 +46,12 @@ namespace WorldPackets
struct CharacterRenameInfo
{
- friend class WorldSession;
-
- protected:
ObjectGuid Guid;
std::string Name;
};
struct CharacterCustomizeInfo : public CharacterRenameInfo
{
- friend class Player;
- friend class WorldSession;
-
- protected:
uint8 Gender = GENDER_NONE;
uint8 Skin = 0;
uint8 Face = 0;
@@ -74,20 +62,11 @@ namespace WorldPackets
struct CharacterFactionChangeInfo : public CharacterCustomizeInfo
{
- friend class Player;
- friend class WorldSession;
-
- protected:
uint8 Race = 0;
};
struct CharacterUndeleteInfo
{
- friend class UndeleteCharacter;
- friend class UndeleteCharacterResponse;
- friend class WorldSession;
-
- protected:
/// User specified variables
ObjectGuid CharacterGuid; ///< Guid of the character to restore
int32 ClientToken = 0; ///< @todo: research
@@ -162,7 +141,7 @@ namespace WorldPackets
CharEnumResult();
- void Write() override;
+ WorldPacket const* Write() override;
bool Success = false; ///<
bool IsDeletedCharacters = false; ///< used for character undelete list
@@ -199,7 +178,7 @@ namespace WorldPackets
public:
CharacterCreateResponse();
- void Write() override;
+ WorldPacket const* Write() override;
uint8 Code = 0; ///< Result code @see enum ResponseCodes
};
@@ -219,7 +198,7 @@ namespace WorldPackets
public:
CharacterDeleteResponse();
- void Write() override;
+ WorldPacket const* Write() override;
uint8 Code = 0; ///< Result code @see enum ResponseCodes
};
@@ -243,7 +222,7 @@ namespace WorldPackets
public:
UndeleteCharacterResponse();
- void Write() override;
+ WorldPacket const* Write() override;
/**
* @var ObjectGuid CharacterGuid
@@ -258,7 +237,7 @@ namespace WorldPackets
public:
UndeleteCooldownStatusResponse();
- void Write() override;
+ WorldPacket const* Write() override;
bool OnCooldown = false; ///<
uint32 MaxCooldown = 0; ///< Max. cooldown until next free character restoration. Displayed in undelete confirm message. (in sec)
diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp
index c1d11db9ef9..e6e6fbe9aa2 100644
--- a/src/server/game/Server/Packets/SystemPackets.cpp
+++ b/src/server/game/Server/Packets/SystemPackets.cpp
@@ -20,24 +20,26 @@
WorldPackets::System::FeatureSystemStatusGlueScreen::FeatureSystemStatusGlueScreen()
: ServerPacket(SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN, 1) { }
-void WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
+WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
{
_worldPacket.WriteBit(BpayStoreEnabled);
_worldPacket.WriteBit(BpayStoreAvailable);
_worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
_worldPacket.WriteBit(CharUndeleteEnabled);
_worldPacket.FlushBits();
+
+ return &_worldPacket;
}
WorldPackets::System::SetTimeZoneInformation::SetTimeZoneInformation()
: ServerPacket(SMSG_SET_TIME_ZONE_INFORMATION) { }
-void WorldPackets::System::SetTimeZoneInformation::Write()
+WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write()
{
- _worldPacket.reserve(1 + ServerTimeTZ.length() + GameTimeTZ.length());
-
_worldPacket.WriteBits(ServerTimeTZ.length(), 7);
_worldPacket.WriteBits(GameTimeTZ.length(), 7);
_worldPacket.WriteString(ServerTimeTZ);
_worldPacket.WriteString(GameTimeTZ);
+
+ return &_worldPacket;
}
diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h
index cb5a22a9b98..0cf075c6317 100644
--- a/src/server/game/Server/Packets/SystemPackets.h
+++ b/src/server/game/Server/Packets/SystemPackets.h
@@ -29,7 +29,7 @@ namespace WorldPackets
public:
FeatureSystemStatusGlueScreen();
- void Write() override;
+ WorldPacket const* Write() override;
bool BpayStoreAvailable = false; // NYI
bool BpayStoreDisabledByParentalControls = false; // NYI
@@ -42,7 +42,7 @@ namespace WorldPackets
public:
SetTimeZoneInformation();
- void Write() override;
+ WorldPacket const* Write() override;
std::string ServerTimeTZ;
std::string GameTimeTZ;
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index ac25da2d559..850264fb70d 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -202,7 +202,7 @@ std::string WorldSession::GetPlayerInfo() const
}
/// Send a packet to the client
-void WorldSession::SendPacket(WorldPacket* packet, bool forced /*= false*/)
+void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/)
{
if (!m_Socket)
return;
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 6ab85070925..17ded49011b 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -230,7 +230,7 @@ class WorldSession
void SendAddonsInfo();
bool IsAddonRegistered(const std::string& prefix) const;
- void SendPacket(WorldPacket* packet, bool forced = false);
+ void SendPacket(WorldPacket const* packet, bool forced = false);
uint32 CompressPacket(uint8* buffer, WorldPacket const& packet);
void SendNotification(const char *format, ...) ATTR_PRINTF(2, 3);
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index e3fcd124881..23bd9a65f88 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -86,9 +86,7 @@ void WorldSocket::HandleSendAuthSession()
memcpy(&challenge.DosChallenge[4], seed2.AsByteArray(16).get(), 16);
challenge.DosZeroBits = 1;
- challenge.Write();
-
- SendPacket(challenge.GetWorldPacket());
+ SendPacket(*challenge.Write());
}
void WorldSocket::ReadHandler()
@@ -606,9 +604,7 @@ void WorldSocket::SendAuthResponseError(uint8 code)
response.SuccessInfo.HasValue = false;
response.WaitInfo.HasValue = false;
response.Result = code;
- response.Write();
-
- SendPacket(response.GetWorldPacket());
+ SendPacket(*response.Write());
}
void WorldSocket::HandlePing(WorldPacket& recvPacket)