Change EntityQueryInitialResultsComplete protocol to use exclusive sequence number

This commit is contained in:
Simon Walton 2018-08-22 14:54:07 -07:00
parent acc7d493ec
commit dd098f05c2
4 changed files with 5 additions and 5 deletions

View file

@ -164,7 +164,7 @@ bool EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O
// Send EntityQueryInitialResultsComplete reliable packet ... // Send EntityQueryInitialResultsComplete reliable packet ...
auto initialCompletion = NLPacket::create(PacketType::EntityQueryInitialResultsComplete, auto initialCompletion = NLPacket::create(PacketType::EntityQueryInitialResultsComplete,
sizeof(OCTREE_PACKET_SEQUENCE), true); sizeof(OCTREE_PACKET_SEQUENCE), true);
initialCompletion->writePrimitive(OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber() - 1U)); initialCompletion->writePrimitive(OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber()));
DependencyManager::get<NodeList>()->sendPacket(std::move(initialCompletion), *node); DependencyManager::get<NodeList>()->sendPacket(std::move(initialCompletion), *node);
} }

View file

@ -122,11 +122,11 @@ bool SafeLanding::isSequenceNumbersComplete() {
int sequenceSize = _initialStart <= _initialEnd ? _initialEnd - _initialStart: int sequenceSize = _initialStart <= _initialEnd ? _initialEnd - _initialStart:
_initialEnd + SEQUENCE_MODULO - _initialStart; _initialEnd + SEQUENCE_MODULO - _initialStart;
auto startIter = _sequenceNumbers.find(_initialStart); auto startIter = _sequenceNumbers.find(_initialStart);
auto endIter = _sequenceNumbers.find(_initialEnd); auto endIter = _sequenceNumbers.find(_initialEnd - 1);
if (sequenceSize == 0 || if (sequenceSize == 0 ||
(startIter != _sequenceNumbers.end() (startIter != _sequenceNumbers.end()
&& endIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end()
&& distance(startIter, endIter) == sequenceSize) ) { && distance(startIter, endIter) == sequenceSize - 1) ) {
_trackingEntities = false; // Don't track anything else that comes in. _trackingEntities = false; // Don't track anything else that comes in.
return true; return true;
} }

View file

@ -26,7 +26,7 @@ class SafeLanding : public QObject {
public: public:
void startEntitySequence(QSharedPointer<EntityTreeRenderer> entityTreeRenderer); void startEntitySequence(QSharedPointer<EntityTreeRenderer> entityTreeRenderer);
void stopEntitySequence(); void stopEntitySequence();
void setCompletionSequenceNumbers(int first, int last); void setCompletionSequenceNumbers(int first, int last); // 'last' exclusive.
void noteReceivedsequenceNumber(int sequenceNumber); void noteReceivedsequenceNumber(int sequenceNumber);
bool isLoadSequenceComplete(); bool isLoadSequenceComplete();

View file

@ -95,7 +95,7 @@ PacketVersion versionForPacketType(PacketType packetType) {
case PacketType::AvatarIdentityRequest: case PacketType::AvatarIdentityRequest:
return 22; return 22;
default: default:
return 22; return 23;
} }
} }