mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
even more changes
Signed-off-by: Paulchen-Panther <Paulchen--Panter@gmx.net>
This commit is contained in:
@@ -5,11 +5,8 @@
|
||||
#include <jsonserver/JsonServer.h>
|
||||
#include "JsonClientConnection.h"
|
||||
|
||||
// hyperion include
|
||||
#include <hyperion/Hyperion.h>
|
||||
#include <hyperion/MessageForwarder.h>
|
||||
// bonjour include
|
||||
#include <bonjour/bonjourserviceregister.h>
|
||||
#include <hyperion/ComponentRegister.h>
|
||||
|
||||
// qt includes
|
||||
#include <QTcpServer>
|
||||
@@ -20,27 +17,16 @@
|
||||
JsonServer::JsonServer(const QJsonDocument& config)
|
||||
: QObject()
|
||||
, _server(new QTcpServer(this))
|
||||
, _hyperion(Hyperion::getInstance())
|
||||
, _openConnections()
|
||||
, _log(Logger::getInstance("JSONSERVER"))
|
||||
, _componentRegister( & _hyperion->getComponentRegister())
|
||||
{
|
||||
Debug(_log, "Created instance");
|
||||
|
||||
// Set trigger for incoming connections
|
||||
connect(_server, SIGNAL(newConnection()), this, SLOT(newConnection()));
|
||||
|
||||
// receive state of forwarder
|
||||
connect(_componentRegister, &ComponentRegister::updatedComponentState, this, &JsonServer::componentStateChanged);
|
||||
|
||||
// listen for component register changes
|
||||
connect(_hyperion, &Hyperion::forwardJsonMessage, this, &JsonServer::forwardJsonMessage);
|
||||
|
||||
// init
|
||||
handleSettingsUpdate(settings::JSONSERVER, config);
|
||||
|
||||
// set initial state of forwarding
|
||||
componentStateChanged(hyperion::COMP_FORWARDER, _componentRegister->isComponentEnabled(hyperion::COMP_FORWARDER));
|
||||
}
|
||||
|
||||
JsonServer::~JsonServer()
|
||||
@@ -64,7 +50,13 @@ void JsonServer::start()
|
||||
|
||||
if(_serviceRegister == nullptr)
|
||||
{
|
||||
_serviceRegister = new BonjourServiceRegister();
|
||||
_serviceRegister = new BonjourServiceRegister(this);
|
||||
_serviceRegister->registerService("_hyperiond-json._tcp", _port);
|
||||
}
|
||||
else if( _serviceRegister->getPort() != _port)
|
||||
{
|
||||
delete _serviceRegister;
|
||||
_serviceRegister = new BonjourServiceRegister(this);
|
||||
_serviceRegister->registerService("_hyperiond-json._tcp", _port);
|
||||
}
|
||||
}
|
||||
@@ -123,38 +115,6 @@ void JsonServer::closedConnection(void)
|
||||
connection->deleteLater();
|
||||
}
|
||||
|
||||
void JsonServer::componentStateChanged(const hyperion::Components component, bool enable)
|
||||
{
|
||||
if (component == hyperion::COMP_FORWARDER)
|
||||
{
|
||||
if(enable)
|
||||
{
|
||||
connect(_hyperion, &Hyperion::forwardJsonMessage, this, &JsonServer::forwardJsonMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
disconnect(_hyperion, &Hyperion::forwardJsonMessage, this, &JsonServer::forwardJsonMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JsonServer::forwardJsonMessage(const QJsonObject &message)
|
||||
{
|
||||
QTcpSocket client;
|
||||
QStringList list = _hyperion->getForwarder()->getJsonSlaves();
|
||||
|
||||
for (const auto& entry : list)
|
||||
{
|
||||
QStringList splitted = entry.split(":");
|
||||
client.connectToHost(splitted[0], splitted[1].toInt());
|
||||
if ( client.waitForConnected(500) )
|
||||
{
|
||||
sendMessage(message,&client);
|
||||
client.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JsonServer::sendMessage(const QJsonObject & message, QTcpSocket * socket)
|
||||
{
|
||||
// serialize message
|
||||
|
Reference in New Issue
Block a user