From 2ff065f75164fdbe1d833103622ef93051dda6c7 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 12 Jun 2017 12:11:16 -0700 Subject: [PATCH] Add isReplicant to node list packet processing --- libraries/networking/src/LimitedNodeList.cpp | 4 +++- libraries/networking/src/LimitedNodeList.h | 2 +- libraries/networking/src/Node.cpp | 5 +++-- libraries/networking/src/Node.h | 4 ++-- libraries/networking/src/NodeList.cpp | 5 +++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index f9baff0daf..43b1602483 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -569,6 +569,7 @@ void LimitedNodeList::handleNodeKill(const SharedNodePointer& node) { SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket, const NodePermissions& permissions, + bool isReplicant, const QUuid& connectionSecret) { QReadLocker readLocker(&_nodeMutex); NodeHash::const_iterator it = _nodeHash.find(uuid); @@ -580,11 +581,12 @@ SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t matchingNode->setLocalSocket(localSocket); matchingNode->setPermissions(permissions); matchingNode->setConnectionSecret(connectionSecret); + matchingNode->setIsReplicant(isReplicant); return matchingNode; } else { // we didn't have this node, so add them - Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket, permissions, connectionSecret); + Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket, permissions, isReplicant, connectionSecret, this); if (nodeType == NodeType::AudioMixer) { LimitedNodeList::flagTimeForConnectionStep(LimitedNodeList::AddedAudioMixer); diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 72fc652733..4bc9134a73 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -146,7 +146,7 @@ public: SharedNodePointer addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket, const NodePermissions& permissions = DEFAULT_AGENT_PERMISSIONS, - const QUuid& connectionSecret = QUuid()); + bool isReplicant = false, const QUuid& connectionSecret = QUuid()); static bool parseSTUNResponse(udt::BasePacket* packet, QHostAddress& newPublicAddress, uint16_t& newPublicPort); bool hasCompletedInitialSTUN() const { return _hasCompletedInitialSTUN; } diff --git a/libraries/networking/src/Node.cpp b/libraries/networking/src/Node.cpp index baad621cd6..8972f68d2a 100644 --- a/libraries/networking/src/Node.cpp +++ b/libraries/networking/src/Node.cpp @@ -51,11 +51,12 @@ const QString& NodeType::getNodeTypeName(NodeType_t nodeType) { } Node::Node(const QUuid& uuid, NodeType_t type, const HifiSockAddr& publicSocket, - const HifiSockAddr& localSocket, const NodePermissions& permissions, const QUuid& connectionSecret, - QObject* parent) : + const HifiSockAddr& localSocket, const NodePermissions& permissions, bool isReplicant, + const QUuid& connectionSecret, QObject* parent) : NetworkPeer(uuid, publicSocket, localSocket, parent), _type(type), _connectionSecret(connectionSecret), + _isReplicant(isReplicant), _pingMs(-1), // "Uninitialized" _clockSkewUsec(0), _mutex(), diff --git a/libraries/networking/src/Node.h b/libraries/networking/src/Node.h index 2c8270071c..8a2129f6f1 100644 --- a/libraries/networking/src/Node.h +++ b/libraries/networking/src/Node.h @@ -39,8 +39,8 @@ class Node : public NetworkPeer { public: Node(const QUuid& uuid, NodeType_t type, const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket, - const NodePermissions& permissions, const QUuid& connectionSecret = QUuid(), - QObject* parent = nullptr); + const NodePermissions& permissions, bool isReplicant, const QUuid& connectionSecret = QUuid(), + QObject* parent = 0); bool operator==(const Node& otherNode) const { return _uuid == otherNode._uuid; } bool operator!=(const Node& otherNode) const { return !(*this == otherNode); } diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 2aa30b84aa..6710f3ffa3 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -654,8 +654,9 @@ void NodeList::parseNodeFromPacketStream(QDataStream& packetStream) { QUuid nodeUUID, connectionUUID; HifiSockAddr nodePublicSocket, nodeLocalSocket; NodePermissions permissions; + bool isReplicant; - packetStream >> nodeType >> nodeUUID >> nodePublicSocket >> nodeLocalSocket >> permissions; + packetStream >> nodeType >> nodeUUID >> nodePublicSocket >> nodeLocalSocket >> permissions >> isReplicant; // if the public socket address is 0 then it's reachable at the same IP // as the domain server @@ -666,7 +667,7 @@ void NodeList::parseNodeFromPacketStream(QDataStream& packetStream) { packetStream >> connectionUUID; SharedNodePointer node = addOrUpdateNode(nodeUUID, nodeType, nodePublicSocket, - nodeLocalSocket, permissions, connectionUUID); + nodeLocalSocket, permissions, isReplicant, connectionUUID); } void NodeList::sendAssignment(Assignment& assignment) {