mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 03:03:35 +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;
|
qCDebug(networking) << "Added" << *newNode;
|
||||||
|
|
||||||
emit nodeAdded(newNodePointer);
|
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;
|
return newNodePointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::unique_ptr<NLPacket> LimitedNodeList::constructPingPacket(PingType_t pingType) {
|
std::unique_ptr<NLPacket> LimitedNodeList::constructPingPacket(PingType_t pingType) {
|
||||||
int packetSize = sizeof(PingType_t) + sizeof(quint64);
|
int packetSize = sizeof(PingType_t) + sizeof(quint64);
|
||||||
|
|
||||||
|
|
|
@ -239,6 +239,7 @@ signals:
|
||||||
void uuidChanged(const QUuid& ownerUUID, const QUuid& oldUUID);
|
void uuidChanged(const QUuid& ownerUUID, const QUuid& oldUUID);
|
||||||
void nodeAdded(SharedNodePointer);
|
void nodeAdded(SharedNodePointer);
|
||||||
void nodeKilled(SharedNodePointer);
|
void nodeKilled(SharedNodePointer);
|
||||||
|
void nodeActivated(SharedNodePointer);
|
||||||
|
|
||||||
void localSockAddrChanged(const HifiSockAddr& localSockAddr);
|
void localSockAddrChanged(const HifiSockAddr& localSockAddr);
|
||||||
void publicSockAddrChanged(const HifiSockAddr& publicSockAddr);
|
void publicSockAddrChanged(const HifiSockAddr& publicSockAddr);
|
||||||
|
|
|
@ -27,7 +27,7 @@ MessagesClient::MessagesClient() {
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
auto& packetReceiver = nodeList->getPacketReceiver();
|
auto& packetReceiver = nodeList->getPacketReceiver();
|
||||||
packetReceiver.registerMessageListener(PacketType::MessagesData, this, "handleMessagesPacket");
|
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() {
|
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->getType() == NodeType::MessagesMixer) {
|
||||||
if (!node->getActiveSocket()) {
|
for (const auto& channel : _subscribedChannels) {
|
||||||
connect(node.data(), &NetworkPeer::socketActivated, this, &MessagesClient::socketActivated);
|
subscribe(channel);
|
||||||
} else {
|
|
||||||
resubscribeToAll();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesClient::socketActivated(const HifiSockAddr& sockAddr) {
|
|
||||||
resubscribeToAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MessagesClient::resubscribeToAll() {
|
|
||||||
for (const auto& channel : _subscribedChannels) {
|
|
||||||
subscribe(channel);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -37,11 +37,9 @@ signals:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode);
|
void handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode);
|
||||||
void handleNodeAdded(SharedNodePointer node);
|
void handleNodeActivated(SharedNodePointer node);
|
||||||
void socketActivated(const HifiSockAddr& sockAddr);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resubscribeToAll();
|
|
||||||
QSet<QString> _subscribedChannels;
|
QSet<QString> _subscribedChannels;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue