mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 09:44:21 +02:00
move JSON stats sending to a packet list
This commit is contained in:
parent
88f8f692fb
commit
bf625f5af1
1 changed files with 4 additions and 22 deletions
|
@ -93,40 +93,22 @@ NodeList::NodeList(char newOwnerType, unsigned short socketListenPort, unsigned
|
|||
}
|
||||
|
||||
qint64 NodeList::sendStats(const QJsonObject& statsObject, const HifiSockAddr& destination) {
|
||||
QByteArray statsPacket(MAX_PACKET_SIZE, 0);
|
||||
int numBytesForPacketHeader = populatePacketHeader(statsPacket, PacketTypeNodeJsonStats);
|
||||
NLPacketList statsPacketList(PacketType::NodeJsonStats);
|
||||
|
||||
// get a QStringList using JSONBreakableMarshal
|
||||
QStringList statsStringList = JSONBreakableMarshal::toStringList(statsObject, "");
|
||||
|
||||
int numBytesWritten = numBytesForPacketHeader;
|
||||
|
||||
// enumerate the resulting strings - pack them and send off packets once we hit MTU size
|
||||
// enumerate the resulting strings - pack them and send off packets via NLPacketList
|
||||
foreach(const QString& statsItem, statsStringList) {
|
||||
QByteArray utf8String = statsItem.toUtf8();
|
||||
utf8String.append('\0');
|
||||
|
||||
if (numBytesWritten + utf8String.size() > MAX_PACKET_SIZE) {
|
||||
// send off the current packet since the next string will make us too big
|
||||
statsPacket.resize(numBytesWritten);
|
||||
writeUnverifiedDatagram(statsPacket, destination);
|
||||
|
||||
// reset the number of bytes written to the size of our packet header
|
||||
numBytesWritten = numBytesForPacketHeader;
|
||||
}
|
||||
|
||||
// write this string into the stats packet
|
||||
statsPacket.replace(numBytesWritten, utf8String.size(), utf8String);
|
||||
|
||||
// keep track of the number of bytes we have written
|
||||
numBytesWritten += utf8String.size();
|
||||
statsStringList->write(utfString);
|
||||
}
|
||||
|
||||
if (numBytesWritten > numBytesForPacketHeader) {
|
||||
// always send the last packet, if it has data
|
||||
statsPacket.resize(numBytesWritten);
|
||||
writeUnverifiedDatagram(statsPacket, destination);
|
||||
}
|
||||
sendPacketList(statsStringList, destination);
|
||||
|
||||
// enumerate the resulting strings, breaking them into MTU sized packets
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue