mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 07:19:05 +02:00
ping inactive nodes in conjunction with domain server check in
This commit is contained in:
parent
94c449e10c
commit
dd4d944dea
4 changed files with 8 additions and 16 deletions
|
@ -107,10 +107,6 @@ void Agent::run() {
|
||||||
connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes()));
|
connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes()));
|
||||||
silentNodeTimer->start(NODE_SILENCE_THRESHOLD_USECS / 1000);
|
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
|
// tell our script engine about our local particle tree
|
||||||
_scriptEngine.getParticlesScriptingInterface()->setParticleTree(&_particleTree);
|
_scriptEngine.getParticlesScriptingInterface()->setParticleTree(&_particleTree);
|
||||||
|
|
||||||
|
|
|
@ -655,8 +655,4 @@ void OctreeServer::run() {
|
||||||
QTimer* silentNodeTimer = new QTimer(this);
|
QTimer* silentNodeTimer = new QTimer(this);
|
||||||
connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes()));
|
connect(silentNodeTimer, SIGNAL(timeout()), nodeList, SLOT(removeSilentNodes()));
|
||||||
silentNodeTimer->start(NODE_SILENCE_THRESHOLD_USECS / 1000);
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,7 @@ void DatagramProcessor::processDatagrams() {
|
||||||
DataServerClient::processMessageFromDataServer(incomingPacket);
|
DataServerClient::processMessageFromDataServer(incomingPacket);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
NodeList::getInstance()->processNodeData(senderSockAddr, incomingPacket);
|
nodeList->processNodeData(senderSockAddr, incomingPacket);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,8 +140,6 @@ qint64 NodeList::writeDatagram(const QByteArray& datagram, const SharedNodePoint
|
||||||
// setup the MD5 hash for source verification in the header
|
// setup the MD5 hash for source verification in the header
|
||||||
replaceHashInPacketGivenConnectionUUID(datagramCopy, destinationNode->getConnectionSecret());
|
replaceHashInPacketGivenConnectionUUID(datagramCopy, destinationNode->getConnectionSecret());
|
||||||
|
|
||||||
qDebug() << "Sending a packet of type" << packetTypeForPacket(datagram);
|
|
||||||
|
|
||||||
return _nodeSocket.writeDatagram(datagramCopy, destinationSockAddr->getAddress(), destinationSockAddr->getPort());
|
return _nodeSocket.writeDatagram(datagramCopy, destinationSockAddr->getAddress(), destinationSockAddr->getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,9 +232,10 @@ void NodeList::processNodeData(const HifiSockAddr& senderSockAddr, const QByteAr
|
||||||
}
|
}
|
||||||
case PacketTypePing: {
|
case PacketTypePing: {
|
||||||
// send back a reply
|
// send back a reply
|
||||||
if (sendingNodeForPacket(packet)) {
|
SharedNodePointer matchingNode = sendingNodeForPacket(packet);
|
||||||
|
if (matchingNode) {
|
||||||
QByteArray replyPacket = constructPingReplyPacket(packet);
|
QByteArray replyPacket = constructPingReplyPacket(packet);
|
||||||
writeDatagram(replyPacket, sendingNodeForPacket(packet), senderSockAddr);
|
writeDatagram(replyPacket, matchingNode, senderSockAddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -608,6 +607,10 @@ int NodeList::processDomainServerList(const QByteArray& packet) {
|
||||||
packetStream >> connectionUUID;
|
packetStream >> connectionUUID;
|
||||||
node->setConnectionSecret(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;
|
return readNodes;
|
||||||
}
|
}
|
||||||
|
@ -681,9 +684,6 @@ SharedNodePointer NodeList::addOrUpdateNode(const QUuid& uuid, char nodeType,
|
||||||
// we didn't have this node, so add them
|
// we didn't have this node, so add them
|
||||||
Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket);
|
Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket);
|
||||||
SharedNodePointer newNodeSharedPointer(newNode, &QObject::deleteLater);
|
SharedNodePointer newNodeSharedPointer(newNode, &QObject::deleteLater);
|
||||||
|
|
||||||
// try and ping the new node right away to open a connection
|
|
||||||
pingPublicAndLocalSocketsForInactiveNode(newNodeSharedPointer);
|
|
||||||
|
|
||||||
_nodeHash.insert(newNode->getUUID(), newNodeSharedPointer);
|
_nodeHash.insert(newNode->getUUID(), newNodeSharedPointer);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue