From dd4d944dea44a639742ce9193a4e363363fb2971 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 7 Feb 2014 14:06:42 -0800 Subject: [PATCH] ping inactive nodes in conjunction with domain server check in --- assignment-client/src/Agent.cpp | 4 ---- assignment-client/src/octree/OctreeServer.cpp | 4 ---- interface/src/DatagramProcessor.cpp | 2 +- libraries/shared/src/NodeList.cpp | 14 +++++++------- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 0030e3ffb8..cc0ddd59f2 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -107,10 +107,6 @@ void Agent::run() { connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes())); silentNodeTimer->start(NODE_SILENCE_THRESHOLD_USECS / 1000); - QTimer* pingNodesTimer = new QTimer(this); - connect(pingNodesTimer, SIGNAL(timeout()), nodeList, SLOT(pingInactiveNodes())); - pingNodesTimer->start(PING_INACTIVE_NODE_INTERVAL_USECS / 1000); - // tell our script engine about our local particle tree _scriptEngine.getParticlesScriptingInterface()->setParticleTree(&_particleTree); diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index 7d237f46e2..1fb858c884 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -655,8 +655,4 @@ void OctreeServer::run() { QTimer* silentNodeTimer = new QTimer(this); connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes())); silentNodeTimer->start(NODE_SILENCE_THRESHOLD_USECS / 1000); - - QTimer* pingNodesTimer = new QTimer(this); - connect(pingNodesTimer, SIGNAL(timeout()), nodeList, SLOT(pingInactiveNodes())); - pingNodesTimer->start(PING_INACTIVE_NODE_INTERVAL_USECS / 1000); } diff --git a/interface/src/DatagramProcessor.cpp b/interface/src/DatagramProcessor.cpp index 6271ef5fde..d8447168cd 100644 --- a/interface/src/DatagramProcessor.cpp +++ b/interface/src/DatagramProcessor.cpp @@ -121,7 +121,7 @@ void DatagramProcessor::processDatagrams() { DataServerClient::processMessageFromDataServer(incomingPacket); break; default: - NodeList::getInstance()->processNodeData(senderSockAddr, incomingPacket); + nodeList->processNodeData(senderSockAddr, incomingPacket); break; } } diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 0dc94a20b3..2e78537734 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -140,8 +140,6 @@ qint64 NodeList::writeDatagram(const QByteArray& datagram, const SharedNodePoint // setup the MD5 hash for source verification in the header replaceHashInPacketGivenConnectionUUID(datagramCopy, destinationNode->getConnectionSecret()); - qDebug() << "Sending a packet of type" << packetTypeForPacket(datagram); - return _nodeSocket.writeDatagram(datagramCopy, destinationSockAddr->getAddress(), destinationSockAddr->getPort()); } @@ -234,9 +232,10 @@ void NodeList::processNodeData(const HifiSockAddr& senderSockAddr, const QByteAr } case PacketTypePing: { // send back a reply - if (sendingNodeForPacket(packet)) { + SharedNodePointer matchingNode = sendingNodeForPacket(packet); + if (matchingNode) { QByteArray replyPacket = constructPingReplyPacket(packet); - writeDatagram(replyPacket, sendingNodeForPacket(packet), senderSockAddr); + writeDatagram(replyPacket, matchingNode, senderSockAddr); } break; @@ -608,6 +607,10 @@ int NodeList::processDomainServerList(const QByteArray& packet) { packetStream >> connectionUUID; node->setConnectionSecret(connectionUUID); } + + // ping inactive nodes in conjunction with receipt of list from domain-server + // this makes it happen every second and also pings any newly added nodes + pingInactiveNodes(); return readNodes; } @@ -681,9 +684,6 @@ SharedNodePointer NodeList::addOrUpdateNode(const QUuid& uuid, char nodeType, // we didn't have this node, so add them Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket); SharedNodePointer newNodeSharedPointer(newNode, &QObject::deleteLater); - - // try and ping the new node right away to open a connection - pingPublicAndLocalSocketsForInactiveNode(newNodeSharedPointer); _nodeHash.insert(newNode->getUUID(), newNodeSharedPointer);