mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 22:13:12 +02:00
add message received signal
This commit is contained in:
parent
e7a8df306c
commit
5b9791d800
5 changed files with 22 additions and 35 deletions
|
@ -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(
|
||||||
|
|
|
@ -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);
|
||||||
});
|
});
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue