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 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// //
#include <cfloat>
#include <random>
#include <QtCore/QCoreApplication> #include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QJsonObject> #include <QtCore/QJsonObject>
#include <QtCore/QTimer>
#include <QtCore/QThread>
#include <QBuffer> #include <QBuffer>
#include <LogHandler.h> #include <LogHandler.h>
#include <NodeList.h> #include <NodeList.h>
#include <udt/PacketHeaders.h> #include <udt/PacketHeaders.h>
#include <SharedUtil.h>
#include <UUID.h>
#include <TryLocker.h>
#include "MessagesMixer.h" #include "MessagesMixer.h"
@ -46,7 +37,6 @@ MessagesMixer::~MessagesMixer() {
} }
void MessagesMixer::nodeKilled(SharedNodePointer killedNode) { void MessagesMixer::nodeKilled(SharedNodePointer killedNode) {
qDebug() << "MessagesMixer::nodeKilled()... node:" << killedNode->getUUID();
// FIXME - remove the node from the subscription maps // FIXME - remove the node from the subscription maps
} }
@ -67,7 +57,6 @@ void MessagesMixer::handleMessages(QSharedPointer<NLPacketList> packetList, Shar
auto messageData = packet.read(messageLength); auto messageData = packet.read(messageLength);
QString message = QString::fromUtf8(messageData); QString message = QString::fromUtf8(messageData);
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
nodeList->eachMatchingNode( nodeList->eachMatchingNode(

View file

@ -35,4 +35,9 @@ Script.update.connect(function (deltaTime) {
//print(message); //print(message);
Messages.sendMessage(channel, 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()); 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); auto packet = NLPacket::create(PacketType::DomainSettingsRequest, sizeof(assignmentType), true, false);
packet->writePrimitive(assignmentType); 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) { void MessagesClient::handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode) {
QByteArray data = packetList->getMessage(); QByteArray packetData = packetList->getMessage();
auto packetType = packetList->getType(); QBuffer packet{ &packetData };
packet.open(QIODevice::ReadOnly);
if (packetType == PacketType::MessagesData) { quint16 channelLength;
QString message = QString::fromUtf8(data); packet.read(reinterpret_cast<char*>(&channelLength), sizeof(channelLength));
qDebug() << "got a messages packet:" << message; 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) { void MessagesClient::sendMessage(const QString& channel, const QString& message) {
qDebug() << "MessagesClient::sendMessage() channel:" << channel << "message:" << message;
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); 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 // in the event that they mixer goes away and/or comes back we should automatically
// resubscribe to those channels // resubscribe to those channels
void MessagesClient::subscribe(const QString& channel) { void MessagesClient::subscribe(const QString& channel) {
qDebug() << "MessagesClient::subscribe() channel:" << channel;
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer);
@ -101,7 +94,6 @@ void MessagesClient::subscribe(const QString& channel) {
} }
void MessagesClient::unsubscribe(const QString& channel) { void MessagesClient::unsubscribe(const QString& channel) {
qDebug() << "MessagesClient::unsubscribe() channel:" << channel;
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer); SharedNodePointer messagesMixer = nodeList->soloNodeOfType(NodeType::MessagesMixer);

View file

@ -32,6 +32,9 @@ public:
Q_INVOKABLE void subscribe(const QString& channel); Q_INVOKABLE void subscribe(const QString& channel);
Q_INVOKABLE void unsubscribe(const QString& channel); Q_INVOKABLE void unsubscribe(const QString& channel);
signals:
void messageReceived(const QString& channel, const QString& message);
private slots: private slots:
void handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode); void handleMessagesPacket(QSharedPointer<NLPacketList> packetList, SharedNodePointer senderNode);
void handleNodeKilled(SharedNodePointer node); void handleNodeKilled(SharedNodePointer node);