From 1867f259d6858af3b5c228302bff73d0cd9c0f54 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 6 Jul 2015 11:55:49 -0700 Subject: [PATCH] keep track of max written in PacketPayload --- libraries/networking/src/PacketPayload.cpp | 5 ++++- libraries/networking/src/PacketPayload.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/PacketPayload.cpp b/libraries/networking/src/PacketPayload.cpp index 6a212f38fc..fa7d0bd694 100644 --- a/libraries/networking/src/PacketPayload.cpp +++ b/libraries/networking/src/PacketPayload.cpp @@ -31,9 +31,12 @@ qint64 PacketPayload::writeData(const char* data, qint64 maxSize) { // good to go - write the data memcpy(_data + currentPos, src, srcBytes); - // should this cause us to push our index (is this the farthest we've written in data)? + // seek to the new position based on where our write just finished seek(currentPos + srcBytes); + // keep track of _maxWritten so we can just write the actual data when packet is about to be sent + _maxWritten = std::max(pos() + 1, _maxWritten); + // return the number of bytes written return srcBytes; } else { diff --git a/libraries/networking/src/PacketPayload.h b/libraries/networking/src/PacketPayload.h index 7407bbd769..c12ec18d04 100644 --- a/libraries/networking/src/PacketPayload.h +++ b/libraries/networking/src/PacketPayload.h @@ -30,6 +30,7 @@ protected: private: char* _data; qint64 _size = 0; + qint64 _maxWritten = 0; }; #endif // hifi_PacketByteArray_h