mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 00:03:39 +02:00
added NodeActivated signal to make it easier for users to know when a recently added node has an active socket
This commit is contained in:
parent
073215d067
commit
293914b84f
4 changed files with 17 additions and 20 deletions
|
@ -530,11 +530,21 @@ SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t
|
|||
qCDebug(networking) << "Added" << *newNode;
|
||||
|
||||
emit nodeAdded(newNodePointer);
|
||||
if (newNodePointer->getActiveSocket()) {
|
||||
emit nodeActivated(newNodePointer);
|
||||
} else {
|
||||
connect(newNodePointer.data(), &NetworkPeer::socketActivated, this, [=] {
|
||||
emit nodeActivated(newNodePointer);
|
||||
disconnect(newNodePointer.data(), &NetworkPeer::socketActivated, this, 0);
|
||||
});
|
||||
}
|
||||
|
||||
return newNodePointer;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::unique_ptr<NLPacket> LimitedNodeList::constructPingPacket(PingType_t pingType) {
|
||||
int packetSize = sizeof(PingType_t) + sizeof(quint64);
|
||||
|
||||
|
|
|
@ -239,6 +239,7 @@ signals:
|
|||
void uuidChanged(const QUuid& ownerUUID, const QUuid& oldUUID);
|
||||
void nodeAdded(SharedNodePointer);
|
||||
void nodeKilled(SharedNodePointer);
|
||||
void nodeActivated(SharedNodePointer);
|
||||
|
||||
void localSockAddrChanged(const HifiSockAddr& localSockAddr);
|
||||
void publicSockAddrChanged(const HifiSockAddr& publicSockAddr);
|
||||
|
|
|
@ -27,7 +27,7 @@ MessagesClient::MessagesClient() {
|
|||
auto nodeList = DependencyManager::get<NodeList>();
|
||||
auto& packetReceiver = nodeList->getPacketReceiver();
|
||||
packetReceiver.registerMessageListener(PacketType::MessagesData, this, "handleMessagesPacket");
|
||||
connect(nodeList.data(), &LimitedNodeList::nodeAdded, this, &MessagesClient::handleNodeAdded);
|
||||
connect(nodeList.data(), &LimitedNodeList::nodeActivated, this, &MessagesClient::handleNodeActivated);
|
||||
}
|
||||
|
||||
void MessagesClient::init() {
|
||||
|
@ -99,22 +99,10 @@ void MessagesClient::unsubscribe(const QString& channel) {
|
|||
}
|
||||
}
|
||||
|
||||
void MessagesClient::handleNodeAdded(SharedNodePointer node) {
|
||||
void MessagesClient::handleNodeActivated(SharedNodePointer node) {
|
||||
if (node->getType() == NodeType::MessagesMixer) {
|
||||
if (!node->getActiveSocket()) {
|
||||
connect(node.data(), &NetworkPeer::socketActivated, this, &MessagesClient::socketActivated);
|
||||
} else {
|
||||
resubscribeToAll();
|
||||
for (const auto& channel : _subscribedChannels) {
|
||||
subscribe(channel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MessagesClient::socketActivated(const HifiSockAddr& sockAddr) {
|
||||
resubscribeToAll();
|
||||
}
|
||||
|
||||
void MessagesClient::resubscribeToAll() {
|
||||
for (const auto& channel : _subscribedChannels) {
|
||||
subscribe(channel);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -37,11 +37,9 @@ signals:
|
|||
|
||||
private slots:
|
||||
void handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode);
|
||||
void handleNodeAdded(SharedNodePointer node);
|
||||
void socketActivated(const HifiSockAddr& sockAddr);
|
||||
void handleNodeActivated(SharedNodePointer node);
|
||||
|
||||
protected:
|
||||
void resubscribeToAll();
|
||||
QSet<QString> _subscribedChannels;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue