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()
This commit is contained in:
jackpoz
2018-08-22 19:44:21 +02:00
committed by GitHub
parent 6e8070ae33
commit deabd4ab45
6 changed files with 10 additions and 0 deletions

View File

@@ -216,6 +216,7 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc) const
queryTemp.Stats.CreatureMovementInfoID = movementId;
queryTemp.Write();
queryTemp.ShrinkToFit();
return queryTemp.Move();
}

View File

@@ -83,6 +83,7 @@ WorldPacket GameObjectTemplate::BuildQueryData(LocaleConstant loc) const
queryTemp.Stats.QuestItems[i] = (*items)[i];
queryTemp.Write();
queryTemp.ShrinkToFit();
return queryTemp.Move();
}

View File

@@ -267,5 +267,6 @@ WorldPacket ItemTemplate::BuildQueryData(LocaleConstant loc) const
response.Stats.HolidayId = HolidayId;
response.Write();
response.ShrinkToFit();
return response.Move();
}

View File

@@ -429,6 +429,7 @@ WorldPacket Quest::BuildQueryData(LocaleConstant loc) const
response.Info.ObjectiveText[i] = locQuestObjectiveText[i];
response.Write();
response.ShrinkToFit();
return response.Move();
}

View File

@@ -51,6 +51,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()); }
};

View File

@@ -413,6 +413,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);