From 073215d067134f360b43f5d3c453554f5ce4b458 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Tue, 17 Nov 2015 15:55:41 -0800 Subject: [PATCH] handle socketActivated --- libraries/networking/src/MessagesClient.cpp | 19 ++++++++++++++----- libraries/networking/src/MessagesClient.h | 2 ++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libraries/networking/src/MessagesClient.cpp b/libraries/networking/src/MessagesClient.cpp index 51cfba263c..f17ea4555a 100644 --- a/libraries/networking/src/MessagesClient.cpp +++ b/libraries/networking/src/MessagesClient.cpp @@ -84,7 +84,6 @@ void MessagesClient::subscribe(const QString& channel) { auto packetList = NLPacketList::create(PacketType::MessagesSubscribe, QByteArray(), true, true); packetList->write(channel.toUtf8()); nodeList->sendPacketList(std::move(packetList), *messagesMixer); - qDebug() << "sending MessagesSubscribe for channel:" << channel; } } @@ -102,10 +101,20 @@ void MessagesClient::unsubscribe(const QString& channel) { void MessagesClient::handleNodeAdded(SharedNodePointer node) { if (node->getType() == NodeType::MessagesMixer) { - qDebug() << "messages-mixer node type added..."; - for (const auto& channel : _subscribedChannels) { - qDebug() << "subscribing to channel:" << channel; - subscribe(channel); + if (!node->getActiveSocket()) { + connect(node.data(), &NetworkPeer::socketActivated, this, &MessagesClient::socketActivated); + } else { + resubscribeToAll(); } } } + +void MessagesClient::socketActivated(const HifiSockAddr& sockAddr) { + resubscribeToAll(); +} + +void MessagesClient::resubscribeToAll() { + for (const auto& channel : _subscribedChannels) { + subscribe(channel); + } +} diff --git a/libraries/networking/src/MessagesClient.h b/libraries/networking/src/MessagesClient.h index 695e7e789e..b5f590bc0d 100644 --- a/libraries/networking/src/MessagesClient.h +++ b/libraries/networking/src/MessagesClient.h @@ -38,8 +38,10 @@ signals: private slots: void handleMessagesPacket(QSharedPointer packetList, SharedNodePointer senderNode); void handleNodeAdded(SharedNodePointer node); + void socketActivated(const HifiSockAddr& sockAddr); protected: + void resubscribeToAll(); QSet _subscribedChannels; };