From ee55721f79bf7b319aaf1cba621fb17d529559bc Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 7 Mar 2016 15:13:24 -0800 Subject: [PATCH] allow sending interface-local messsages --- libraries/networking/src/MessagesClient.cpp | 25 ++++++++++++++------- libraries/networking/src/MessagesClient.h | 5 +++-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/libraries/networking/src/MessagesClient.cpp b/libraries/networking/src/MessagesClient.cpp index 3a03027da0..d8c63c4294 100644 --- a/libraries/networking/src/MessagesClient.cpp +++ b/libraries/networking/src/MessagesClient.cpp @@ -79,20 +79,29 @@ void MessagesClient::handleMessagesPacket(QSharedPointer receiv QString channel, message; QUuid senderID; decodeMessagesPacket(receivedMessage, channel, message, senderID); - emit messageReceived(channel, message, senderID); + emit messageReceived(channel, message, senderID, false); } -void MessagesClient::sendMessage(QString channel, QString message) { +void MessagesClient::sendMessage(QString channel, QString message, bool localOnly) { auto nodeList = DependencyManager::get(); - SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); - - if (messagesMixer) { + if (localOnly) { QUuid senderID = nodeList->getSessionUUID(); - auto packetList = encodeMessagesPacket(channel, message, senderID); - nodeList->sendPacketList(std::move(packetList), *messagesMixer); + emit messageReceived(channel, message, senderID, true); + } else { + SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); + + if (messagesMixer) { + QUuid senderID = nodeList->getSessionUUID(); + auto packetList = encodeMessagesPacket(channel, message, senderID); + nodeList->sendPacketList(std::move(packetList), *messagesMixer); + } } } +void MessagesClient::sendLocalMessage(QString channel, QString message) { + sendMessage(channel, message, true); +} + void MessagesClient::subscribe(QString channel) { _subscribedChannels << channel; auto nodeList = DependencyManager::get(); @@ -123,4 +132,4 @@ void MessagesClient::handleNodeActivated(SharedNodePointer node) { subscribe(channel); } } -} \ No newline at end of file +} diff --git a/libraries/networking/src/MessagesClient.h b/libraries/networking/src/MessagesClient.h index ff7874fd8e..b624acccb7 100644 --- a/libraries/networking/src/MessagesClient.h +++ b/libraries/networking/src/MessagesClient.h @@ -29,7 +29,8 @@ public: Q_INVOKABLE void init(); - Q_INVOKABLE void sendMessage(QString channel, QString message); + Q_INVOKABLE void sendMessage(QString channel, QString message, bool localOnly = false); + Q_INVOKABLE void sendLocalMessage(QString channel, QString message); Q_INVOKABLE void subscribe(QString channel); Q_INVOKABLE void unsubscribe(QString channel); @@ -38,7 +39,7 @@ public: signals: - void messageReceived(QString channel, QString message, QUuid senderUUID); + void messageReceived(QString channel, QString message, QUuid senderUUID, bool localOnly); private slots: void handleMessagesPacket(QSharedPointer receivedMessage, SharedNodePointer senderNode);