From dd098f05c2a8e1c3239548989e6c95a9f9b2d36d Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 22 Aug 2018 14:54:07 -0700 Subject: [PATCH 1/3] Change EntityQueryInitialResultsComplete protocol to use exclusive sequence number --- assignment-client/src/entities/EntityTreeSendThread.cpp | 2 +- interface/src/octree/SafeLanding.cpp | 4 ++-- interface/src/octree/SafeLanding.h | 2 +- libraries/networking/src/udt/PacketHeaders.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/entities/EntityTreeSendThread.cpp b/assignment-client/src/entities/EntityTreeSendThread.cpp index f7ca05fbf2..8b7c8771e8 100644 --- a/assignment-client/src/entities/EntityTreeSendThread.cpp +++ b/assignment-client/src/entities/EntityTreeSendThread.cpp @@ -164,7 +164,7 @@ bool EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O // Send EntityQueryInitialResultsComplete reliable packet ... auto initialCompletion = NLPacket::create(PacketType::EntityQueryInitialResultsComplete, sizeof(OCTREE_PACKET_SEQUENCE), true); - initialCompletion->writePrimitive(OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber() - 1U)); + initialCompletion->writePrimitive(OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber())); DependencyManager::get()->sendPacket(std::move(initialCompletion), *node); } diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index 31106457fb..60b660f66a 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -122,11 +122,11 @@ bool SafeLanding::isSequenceNumbersComplete() { int sequenceSize = _initialStart <= _initialEnd ? _initialEnd - _initialStart: _initialEnd + SEQUENCE_MODULO - _initialStart; auto startIter = _sequenceNumbers.find(_initialStart); - auto endIter = _sequenceNumbers.find(_initialEnd); + auto endIter = _sequenceNumbers.find(_initialEnd - 1); if (sequenceSize == 0 || (startIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end() - && distance(startIter, endIter) == sequenceSize) ) { + && distance(startIter, endIter) == sequenceSize - 1) ) { _trackingEntities = false; // Don't track anything else that comes in. return true; } diff --git a/interface/src/octree/SafeLanding.h b/interface/src/octree/SafeLanding.h index 210dfbac25..9177930d81 100644 --- a/interface/src/octree/SafeLanding.h +++ b/interface/src/octree/SafeLanding.h @@ -26,7 +26,7 @@ class SafeLanding : public QObject { public: void startEntitySequence(QSharedPointer entityTreeRenderer); void stopEntitySequence(); - void setCompletionSequenceNumbers(int first, int last); + void setCompletionSequenceNumbers(int first, int last); // 'last' exclusive. void noteReceivedsequenceNumber(int sequenceNumber); bool isLoadSequenceComplete(); diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 8b50e37699..bf455de3e4 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -95,7 +95,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::AvatarIdentityRequest: return 22; default: - return 22; + return 23; } } From c4b916af62788d62946d59a140ad26ede6f9f81f Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 22 Aug 2018 16:22:30 -0700 Subject: [PATCH 2/3] Just bump packet version for EntityQueryInitialResultsComplete --- libraries/networking/src/udt/PacketHeaders.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index bf455de3e4..25503e192f 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -94,8 +94,10 @@ PacketVersion versionForPacketType(PacketType packetType) { return static_cast(AvatarQueryVersion::ConicalFrustums); case PacketType::AvatarIdentityRequest: return 22; - default: + case PacketType::EntityQueryInitialResultsComplete: return 23; + default: + return 22; } } From c0966d738e334a17f94320639accdfa7f1ae2cde Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Wed, 22 Aug 2018 16:40:49 -0700 Subject: [PATCH 3/3] Use EntityVersion for the EntityQueryInitialResultsComplete packet --- libraries/networking/src/udt/PacketHeaders.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 25503e192f..0f9a49da32 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -95,7 +95,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::AvatarIdentityRequest: return 22; case PacketType::EntityQueryInitialResultsComplete: - return 23; + return static_cast(EntityVersion::ParticleSpin); default: return 22; }