mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 18:44:00 +02:00
fix packet segmentation in PacketList
This commit is contained in:
parent
bb15326676
commit
b5eb4945ab
4 changed files with 9 additions and 9 deletions
|
@ -20,10 +20,10 @@ PacketList::PacketList(PacketType::Value packetType, bool isOrdered) :
|
|||
|
||||
void PacketList::createPacketWithExtendedHeader() {
|
||||
// use the static create method to create a new packet
|
||||
_currentPacket = T::create(_packetType);
|
||||
auto packet = T::create(_packetType);
|
||||
|
||||
// add the extended header to the front of the packet
|
||||
if (_currentPacket.write(_extendedHeader) == -1) {
|
||||
if (packet->write(_extendedHeader) == -1) {
|
||||
qDebug() << "Could not write extendedHeader in PacketList::createPacketWithExtendedHeader"
|
||||
<< "- make sure that _extendedHeader is not larger than the payload capacity.";
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ void PacketList::createPacketWithExtendedHeader() {
|
|||
qint64 writeData(const char* data, qint64 maxSize) {
|
||||
if (!_currentPacket) {
|
||||
// we don't have a current packet, time to set one up
|
||||
createPacketWithExtendedHeader();
|
||||
_currentPacket = createPacketWithExtendedHeader();
|
||||
}
|
||||
|
||||
// check if this block of data can fit into the currentPacket
|
||||
|
@ -46,7 +46,7 @@ qint64 writeData(const char* data, qint64 maxSize) {
|
|||
// it does not fit - this may need to be in the next packet
|
||||
|
||||
if (!_isOrdered) {
|
||||
auto newPacket = T::create(_packetType);
|
||||
auto newPacket = createPacketWithExtendedHeader();
|
||||
|
||||
if (_segmentStartIndex >= 0) {
|
||||
// We in the process of writing a segment for an unordered PacketList.
|
||||
|
|
|
@ -30,7 +30,7 @@ protected:
|
|||
qint64 writeData(const char* data, qint64 maxSize);
|
||||
qint64 readData(const char* data, qint64 maxSize) { return 0 };
|
||||
private:
|
||||
void createPacketWithExtendedHeader();
|
||||
std::unique_ptr<NLPacket> createPacketWithExtendedHeader();
|
||||
|
||||
PacketType::Value _packetType;
|
||||
bool isOrdered;
|
||||
|
@ -41,6 +41,6 @@ private:
|
|||
int _segmentStartIndex = -1;
|
||||
|
||||
QByteArray _extendedHeader = extendedHeader;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // hifi_PacketList_h
|
||||
|
|
|
@ -30,7 +30,7 @@ void SentPacketHistory::packetSent(uint16_t sequenceNumber, const NLPacket& pack
|
|||
<< "Expected:" << expectedSequenceNumber << "Actual:" << sequenceNumber;
|
||||
}
|
||||
_newestSequenceNumber = sequenceNumber;
|
||||
_sentPackets.insert(new NLPacket(packet));
|
||||
_sentPackets.insert(NLPacket::createCopy(packet));
|
||||
}
|
||||
|
||||
const QByteArray* SentPacketHistory::getPacket(uint16_t sequenceNumber) const {
|
||||
|
|
|
@ -23,10 +23,10 @@ public:
|
|||
SentPacketHistory(int size = MAX_REASONABLE_SEQUENCE_GAP);
|
||||
|
||||
void packetSent(uint16_t sequenceNumber, const NLPacket& packet);
|
||||
const NLPacket* getPacket(uint16_t sequenceNumber) const;
|
||||
const std::unique_ptr<NLPacket>& getPacket(uint16_t sequenceNumber) const;
|
||||
|
||||
private:
|
||||
RingBufferHistory<NLPacket*> _sentPackets; // circular buffer
|
||||
RingBufferHistory<std::unique_ptr<NLPacket>> _sentPackets; // circular buffer
|
||||
|
||||
uint16_t _newestSequenceNumber;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue