From 1e7691941cde6b3c1fe7a68e5e4f6cae6801d879 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 17 Jul 2015 15:27:29 -0700 Subject: [PATCH] Add raw data read to Packet --- libraries/networking/src/udt/Packet.cpp | 7 +++++++ libraries/networking/src/udt/Packet.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/libraries/networking/src/udt/Packet.cpp b/libraries/networking/src/udt/Packet.cpp index 3e32a99399..ab757133ca 100644 --- a/libraries/networking/src/udt/Packet.cpp +++ b/libraries/networking/src/udt/Packet.cpp @@ -210,6 +210,13 @@ void Packet::writeSequenceNumber(SequenceNumber seqNum) { &seqNum, sizeof(seqNum)); } +QByteArray Packet::read(qint64 maxSize) { + qint64 sizeToRead = std::min(size() - pos(), maxSize); + QByteArray data { QByteArray::fromRawData(getPayload() + pos(), sizeToRead) }; + seek(pos() + sizeToRead); + return data; +} + qint64 Packet::writeData(const char* data, qint64 maxSize) { // make sure we have the space required to write this block diff --git a/libraries/networking/src/udt/Packet.h b/libraries/networking/src/udt/Packet.h index 4b3c82fa7b..56b63cd702 100644 --- a/libraries/networking/src/udt/Packet.h +++ b/libraries/networking/src/udt/Packet.h @@ -79,6 +79,9 @@ public: virtual bool reset(); virtual qint64 size() const { return _payloadCapacity; } + using QIODevice::read; + QByteArray read(qint64 maxSize); + template qint64 peekPrimitive(T* data); template qint64 readPrimitive(T* data); template qint64 writePrimitive(const T& data);