mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 10:06:57 +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() {
|
void PacketList::createPacketWithExtendedHeader() {
|
||||||
// use the static create method to create a new packet
|
// 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
|
// 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"
|
qDebug() << "Could not write extendedHeader in PacketList::createPacketWithExtendedHeader"
|
||||||
<< "- make sure that _extendedHeader is not larger than the payload capacity.";
|
<< "- 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) {
|
qint64 writeData(const char* data, qint64 maxSize) {
|
||||||
if (!_currentPacket) {
|
if (!_currentPacket) {
|
||||||
// we don't have a current packet, time to set one up
|
// 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
|
// 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
|
// it does not fit - this may need to be in the next packet
|
||||||
|
|
||||||
if (!_isOrdered) {
|
if (!_isOrdered) {
|
||||||
auto newPacket = T::create(_packetType);
|
auto newPacket = createPacketWithExtendedHeader();
|
||||||
|
|
||||||
if (_segmentStartIndex >= 0) {
|
if (_segmentStartIndex >= 0) {
|
||||||
// We in the process of writing a segment for an unordered PacketList.
|
// 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 writeData(const char* data, qint64 maxSize);
|
||||||
qint64 readData(const char* data, qint64 maxSize) { return 0 };
|
qint64 readData(const char* data, qint64 maxSize) { return 0 };
|
||||||
private:
|
private:
|
||||||
void createPacketWithExtendedHeader();
|
std::unique_ptr<NLPacket> createPacketWithExtendedHeader();
|
||||||
|
|
||||||
PacketType::Value _packetType;
|
PacketType::Value _packetType;
|
||||||
bool isOrdered;
|
bool isOrdered;
|
||||||
|
@ -41,6 +41,6 @@ private:
|
||||||
int _segmentStartIndex = -1;
|
int _segmentStartIndex = -1;
|
||||||
|
|
||||||
QByteArray _extendedHeader = extendedHeader;
|
QByteArray _extendedHeader = extendedHeader;
|
||||||
}
|
};
|
||||||
|
|
||||||
#endif // hifi_PacketList_h
|
#endif // hifi_PacketList_h
|
||||||
|
|
|
@ -30,7 +30,7 @@ void SentPacketHistory::packetSent(uint16_t sequenceNumber, const NLPacket& pack
|
||||||
<< "Expected:" << expectedSequenceNumber << "Actual:" << sequenceNumber;
|
<< "Expected:" << expectedSequenceNumber << "Actual:" << sequenceNumber;
|
||||||
}
|
}
|
||||||
_newestSequenceNumber = sequenceNumber;
|
_newestSequenceNumber = sequenceNumber;
|
||||||
_sentPackets.insert(new NLPacket(packet));
|
_sentPackets.insert(NLPacket::createCopy(packet));
|
||||||
}
|
}
|
||||||
|
|
||||||
const QByteArray* SentPacketHistory::getPacket(uint16_t sequenceNumber) const {
|
const QByteArray* SentPacketHistory::getPacket(uint16_t sequenceNumber) const {
|
||||||
|
|
|
@ -23,10 +23,10 @@ public:
|
||||||
SentPacketHistory(int size = MAX_REASONABLE_SEQUENCE_GAP);
|
SentPacketHistory(int size = MAX_REASONABLE_SEQUENCE_GAP);
|
||||||
|
|
||||||
void packetSent(uint16_t sequenceNumber, const NLPacket& packet);
|
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:
|
private:
|
||||||
RingBufferHistory<NLPacket*> _sentPackets; // circular buffer
|
RingBufferHistory<std::unique_ptr<NLPacket>> _sentPackets; // circular buffer
|
||||||
|
|
||||||
uint16_t _newestSequenceNumber;
|
uint16_t _newestSequenceNumber;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue