mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 20:58:38 +02:00
Merge pull request #12024 from birarda/bug/entity-sequence-skip
handle sequence number from reliably sent adds in OctreeEditPacketSender
This commit is contained in:
commit
d299b9a56c
3 changed files with 10 additions and 2 deletions
|
@ -24,8 +24,7 @@ SentPacketHistory::SentPacketHistory(int size)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SentPacketHistory::packetSent(uint16_t sequenceNumber, const NLPacket& packet) {
|
void SentPacketHistory::untrackedPacketSent(uint16_t sequenceNumber) {
|
||||||
|
|
||||||
// check if given seq number has the expected value. if not, something's wrong with
|
// check if given seq number has the expected value. if not, something's wrong with
|
||||||
// the code calling this function
|
// the code calling this function
|
||||||
uint16_t expectedSequenceNumber = _newestSequenceNumber + (uint16_t)1;
|
uint16_t expectedSequenceNumber = _newestSequenceNumber + (uint16_t)1;
|
||||||
|
@ -34,6 +33,10 @@ void SentPacketHistory::packetSent(uint16_t sequenceNumber, const NLPacket& pack
|
||||||
<< "Expected:" << expectedSequenceNumber << "Actual:" << sequenceNumber;
|
<< "Expected:" << expectedSequenceNumber << "Actual:" << sequenceNumber;
|
||||||
}
|
}
|
||||||
_newestSequenceNumber = sequenceNumber;
|
_newestSequenceNumber = sequenceNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SentPacketHistory::packetSent(uint16_t sequenceNumber, const NLPacket& packet) {
|
||||||
|
untrackedPacketSent(sequenceNumber);
|
||||||
|
|
||||||
QWriteLocker locker(&_packetsLock);
|
QWriteLocker locker(&_packetsLock);
|
||||||
_sentPackets.insert(NLPacket::createCopy(packet));
|
_sentPackets.insert(NLPacket::createCopy(packet));
|
||||||
|
|
|
@ -27,6 +27,8 @@ class SentPacketHistory {
|
||||||
public:
|
public:
|
||||||
SentPacketHistory(int size = MAX_REASONABLE_SEQUENCE_GAP);
|
SentPacketHistory(int size = MAX_REASONABLE_SEQUENCE_GAP);
|
||||||
|
|
||||||
|
void untrackedPacketSent(uint16_t sequenceNumber);
|
||||||
|
|
||||||
void packetSent(uint16_t sequenceNumber, const NLPacket& packet);
|
void packetSent(uint16_t sequenceNumber, const NLPacket& packet);
|
||||||
const NLPacket* getPacket(uint16_t sequenceNumber) const;
|
const NLPacket* getPacket(uint16_t sequenceNumber) const;
|
||||||
|
|
||||||
|
|
|
@ -291,6 +291,9 @@ void OctreeEditPacketSender::queueOctreeEditMessage(PacketType type, QByteArray&
|
||||||
// release the new packet
|
// release the new packet
|
||||||
releaseQueuedPacketList(nodeUUID, std::move(newPacket));
|
releaseQueuedPacketList(nodeUUID, std::move(newPacket));
|
||||||
|
|
||||||
|
// tell the sent packet history that we used a sequence number for an untracked packet
|
||||||
|
auto& sentPacketHistory = _sentPacketHistories[nodeUUID];
|
||||||
|
sentPacketHistory.untrackedPacketSent(sequence);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
std::unique_ptr<NLPacket>& bufferedPacket = _pendingEditPackets[nodeUUID].first; //only a NLPacket for now
|
std::unique_ptr<NLPacket>& bufferedPacket = _pendingEditPackets[nodeUUID].first; //only a NLPacket for now
|
||||||
|
|
Loading…
Reference in a new issue