From 5b9791d8002e79e78707f6d7f10df7721fe8908e Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Tue, 17 Nov 2015 11:50:10 -0800 Subject: [PATCH] add message received signal --- .../src/messages/MessagesMixer.cpp | 11 ------ examples/example/messagesExample.js | 5 +++ libraries/networking/src/DomainHandler.cpp | 2 -- libraries/networking/src/MessagesClient.cpp | 36 ++++++++----------- libraries/networking/src/MessagesClient.h | 3 ++ 5 files changed, 22 insertions(+), 35 deletions(-) diff --git a/assignment-client/src/messages/MessagesMixer.cpp b/assignment-client/src/messages/MessagesMixer.cpp index ae1ac74306..21e3fdc4c5 100644 --- a/assignment-client/src/messages/MessagesMixer.cpp +++ b/assignment-client/src/messages/MessagesMixer.cpp @@ -9,22 +9,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include -#include - #include -#include #include -#include -#include #include #include #include #include -#include -#include -#include #include "MessagesMixer.h" @@ -46,7 +37,6 @@ MessagesMixer::~MessagesMixer() { } void MessagesMixer::nodeKilled(SharedNodePointer killedNode) { - qDebug() << "MessagesMixer::nodeKilled()... node:" << killedNode->getUUID(); // FIXME - remove the node from the subscription maps } @@ -67,7 +57,6 @@ void MessagesMixer::handleMessages(QSharedPointer packetList, Shar auto messageData = packet.read(messageLength); QString message = QString::fromUtf8(messageData); - auto nodeList = DependencyManager::get(); nodeList->eachMatchingNode( diff --git a/examples/example/messagesExample.js b/examples/example/messagesExample.js index 39ee4a3dbe..11827f019f 100644 --- a/examples/example/messagesExample.js +++ b/examples/example/messagesExample.js @@ -35,4 +35,9 @@ Script.update.connect(function (deltaTime) { //print(message); Messages.sendMessage(channel, message); } +}); + + +Messages.messageReceived.connect(function (channel, message) { + print("message received on channel:" + channel + ", message:" + message); }); \ No newline at end of file diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index afb2dde266..f7d26f25c5 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -260,8 +260,6 @@ void DomainHandler::requestDomainSettings() { Assignment::Type assignmentType = Assignment::typeForNodeType(DependencyManager::get()->getOwnerType()); - qCDebug(networking) << "Requesting settings from domain server for assignmentType:" << assignmentType; - auto packet = NLPacket::create(PacketType::DomainSettingsRequest, sizeof(assignmentType), true, false); packet->writePrimitive(assignmentType); diff --git a/libraries/networking/src/MessagesClient.cpp b/libraries/networking/src/MessagesClient.cpp index 60f1146c92..1f9a8c123c 100644 --- a/libraries/networking/src/MessagesClient.cpp +++ b/libraries/networking/src/MessagesClient.cpp @@ -40,31 +40,25 @@ void MessagesClient::init() { } } -bool haveMessagesMixer() { - auto nodeList = DependencyManager::get(); - SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); - - if (!messagesMixer) { - qCWarning(messages_client) << "Could not complete MessagesClient operation " - << "since you are not currently connected to a messages-mixer."; - return false; - } - - return true; -} - void MessagesClient::handleMessagesPacket(QSharedPointer packetList, SharedNodePointer senderNode) { - QByteArray data = packetList->getMessage(); - auto packetType = packetList->getType(); + QByteArray packetData = packetList->getMessage(); + QBuffer packet{ &packetData }; + packet.open(QIODevice::ReadOnly); - if (packetType == PacketType::MessagesData) { - QString message = QString::fromUtf8(data); - qDebug() << "got a messages packet:" << message; - } + quint16 channelLength; + packet.read(reinterpret_cast(&channelLength), sizeof(channelLength)); + auto channelData = packet.read(channelLength); + QString channel = QString::fromUtf8(channelData); + + quint16 messageLength; + packet.read(reinterpret_cast(&messageLength), sizeof(messageLength)); + auto messageData = packet.read(messageLength); + QString message = QString::fromUtf8(messageData); + + emit messageReceived(channel, message); } void MessagesClient::sendMessage(const QString& channel, const QString& message) { - qDebug() << "MessagesClient::sendMessage() channel:" << channel << "message:" << message; auto nodeList = DependencyManager::get(); SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); @@ -89,7 +83,6 @@ void MessagesClient::sendMessage(const QString& channel, const QString& message) // in the event that they mixer goes away and/or comes back we should automatically // resubscribe to those channels void MessagesClient::subscribe(const QString& channel) { - qDebug() << "MessagesClient::subscribe() channel:" << channel; auto nodeList = DependencyManager::get(); SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); @@ -101,7 +94,6 @@ void MessagesClient::subscribe(const QString& channel) { } void MessagesClient::unsubscribe(const QString& channel) { - qDebug() << "MessagesClient::unsubscribe() channel:" << channel; auto nodeList = DependencyManager::get(); SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); diff --git a/libraries/networking/src/MessagesClient.h b/libraries/networking/src/MessagesClient.h index a79b855be9..13e908e129 100644 --- a/libraries/networking/src/MessagesClient.h +++ b/libraries/networking/src/MessagesClient.h @@ -32,6 +32,9 @@ public: Q_INVOKABLE void subscribe(const QString& channel); Q_INVOKABLE void unsubscribe(const QString& channel); +signals: + void messageReceived(const QString& channel, const QString& message); + private slots: void handleMessagesPacket(QSharedPointer packetList, SharedNodePointer senderNode); void handleNodeKilled(SharedNodePointer node);