diff options
author | jackpoz <giacomopoz@gmail.com> | 2018-08-22 19:44:21 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-10-22 23:15:27 +0200 |
commit | b6f28a7ebc2684d7514211201a344a6e510b7be5 (patch) | |
tree | 8bde8a06a6e4c9f346580f1f3a910ec4c71bb460 /src/server/game | |
parent | 8c17cdf095c9891c034cec71f86ccb9c3c2dba2b (diff) |
Core/Packets: Reduce memory footprint of cached queries (#22297)
Ensure only the minimum required memory is used by caching query packets by calling shrink_to_fit()
(cherry picked from commit deabd4ab453ee8cf1f515bdb32bf9cf9de7f0591)
Diffstat (limited to 'src/server/game')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Server/Packet.h | 1 |
5 files changed, 5 insertions, 0 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 2ca94a09e97..4139aa517bb 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -244,6 +244,7 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc) const } queryTemp.Write(); + queryTemp.ShrinkToFit(); return queryTemp.Move(); } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 01c817a6d60..c81612003ea 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -89,6 +89,7 @@ WorldPacket GameObjectTemplate::BuildQueryData(LocaleConstant loc) const stats.ContentTuningId = ContentTuningId; queryTemp.Write(); + queryTemp.ShrinkToFit(); return queryTemp.Move(); } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b1bf17ec7d7..abb24cab237 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -10492,6 +10492,7 @@ void ObjectMgr::InitializeQueriesData(QueryDataGroup mask) void QuestPOIData::InitializeQueryData() { QueryDataBuffer << *this; + QueryDataBuffer.shrink_to_fit(); } void ObjectMgr::LoadSceneTemplates() diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index b1df0ef8284..633d79134b4 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -594,6 +594,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc) const response.Info.TimeAllowed = GetLimitTime(); response.Write(); + response.ShrinkToFit(); return response.Move(); } diff --git a/src/server/game/Server/Packet.h b/src/server/game/Server/Packet.h index 986c46b805a..17add8a7e42 100644 --- a/src/server/game/Server/Packet.h +++ b/src/server/game/Server/Packet.h @@ -52,6 +52,7 @@ namespace WorldPackets void Clear() { _worldPacket.clear(); } WorldPacket&& Move() { return std::move(_worldPacket); } + void ShrinkToFit() { _worldPacket.shrink_to_fit(); } OpcodeServer GetOpcode() const { return OpcodeServer(_worldPacket.GetOpcode()); } }; |