aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2018-08-22 19:44:21 +0200
committerShauren <shauren.trinity@gmail.com>2021-10-22 23:15:27 +0200
commitb6f28a7ebc2684d7514211201a344a6e510b7be5 (patch)
tree8bde8a06a6e4c9f346580f1f3a910ec4c71bb460 /src
parent8c17cdf095c9891c034cec71f86ccb9c3c2dba2b (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')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp1
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp1
-rw-r--r--src/server/game/Quests/QuestDef.cpp1
-rw-r--r--src/server/game/Server/Packet.h1
-rw-r--r--src/server/shared/Packets/ByteBuffer.h5
6 files changed, 10 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()); }
};
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index 36cb0f5f970..c629048922d 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -552,6 +552,11 @@ class TC_SHARED_API ByteBuffer
_storage.reserve(ressize);
}
+ void shrink_to_fit()
+ {
+ _storage.shrink_to_fit();
+ }
+
void append(const char *src, size_t cnt)
{
return append((const uint8 *)src, cnt);