add message received signal

This commit is contained in:
Brad Hefta-Gaub 2015-11-17 11:50:10 -08:00
parent e7a8df306c
commit 5b9791d800
5 changed files with 22 additions and 35 deletions

View file

@ -9,22 +9,13 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#include <cfloat>
#include <random>
#include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QJsonObject>
#include <QtCore/QTimer>
#include <QtCore/QThread>
#include <QBuffer>
#include <LogHandler.h>
#include <NodeList.h>
#include <udt/PacketHeaders.h>
#include <SharedUtil.h>
#include <UUID.h>
#include <TryLocker.h>
#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<NLPacketList> packetList, Shar
auto messageData = packet.read(messageLength);
QString message = QString::fromUtf8(messageData);
auto nodeList = DependencyManager::get<NodeList>();
nodeList->eachMatchingNode(

View file

@ -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);
});

View file

@ -260,8 +260,6 @@ void DomainHandler::requestDomainSettings() {
Assignment::Type assignmentType = Assignment::typeForNodeType(DependencyManager::get<NodeList>()->getOwnerType());
qCDebug(networking) << "Requesting settings from domain server for assignmentType:" << assignmentType;
auto packet = NLPacket::create(PacketType::DomainSettingsRequest, sizeof(assignmentType), true, false);
packet->writePrimitive(assignmentType);

View file

@ -40,31 +40,25 @@ void MessagesClient::init() {
}
}
bool haveMessagesMixer() {
auto nodeList = DependencyManager::get<NodeList>();
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<NLPacketList> 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<char*>(&channelLength), sizeof(channelLength));
auto channelData = packet.read(channelLength);
QString channel = QString::fromUtf8(channelData);
quint16 messageLength;
packet.read(reinterpret_cast<char*>(&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<NodeList>();
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<NodeList>();
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<NodeList>();
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer);

View file

@ -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<NLPacketList> packetList, SharedNodePointer senderNode);
void handleNodeKilled(SharedNodePointer node);