Merge pull request from sethalves/local-messages

allow sending interface-local messsages
This commit is contained in:
Chris Collins 2016-03-07 17:21:45 -08:00
commit 5078f486b1
2 changed files with 20 additions and 10 deletions
libraries/networking/src

View file

@ -79,20 +79,29 @@ void MessagesClient::handleMessagesPacket(QSharedPointer<ReceivedMessage> 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<NodeList>();
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<NodeList>();
@ -123,4 +132,4 @@ void MessagesClient::handleNodeActivated(SharedNodePointer node) {
subscribe(channel);
}
}
}
}

View file

@ -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> receivedMessage, SharedNodePointer senderNode);