remove protobuf (part 2)

This commit is contained in:
Paulchen-Panther
2018-12-30 22:07:53 +01:00
parent 559311e18c
commit 38950edf35
54 changed files with 1441 additions and 377 deletions

View File

@@ -16,10 +16,10 @@ target_link_libraries(hyperiond
effectengine
jsonserver
udplistener
protoserver
flatbufserver
webserver
bonjour
ssdp
python
${PYTHON_LIBRARIES}
)

View File

@@ -21,7 +21,6 @@
#include <hyperion/Hyperion.h>
#include <jsonserver/JsonServer.h>
#include <protoserver/ProtoServer.h>
#include <udplistener/UDPListener.h>
#include <webserver/WebServer.h>
#include <utils/Stats.h>
@@ -34,6 +33,9 @@
// bonjour browser
#include <bonjour/bonjourbrowserwrapper.h>
// ssdp
#include <ssdp/SSDPHandler.h>
// settings
#include <hyperion/SettingsManager.h>
@@ -49,7 +51,6 @@ HyperionDaemon::HyperionDaemon(QString configFile, const QString rootPath, QObje
, _pyInit(new PythonInit())
, _webserver(nullptr)
, _jsonServer(nullptr)
, _protoServer(nullptr)
, _udpListener(nullptr)
, _v4l2Grabbers()
, _dispmanx(nullptr)
@@ -59,6 +60,7 @@ HyperionDaemon::HyperionDaemon(QString configFile, const QString rootPath, QObje
, _osxGrabber(nullptr)
, _hyperion(nullptr)
, _stats(nullptr)
, _ssdp(nullptr)
, _currVideoMode(VIDEO_2D)
{
HyperionDaemon::daemon = this;
@@ -67,6 +69,8 @@ HyperionDaemon::HyperionDaemon(QString configFile, const QString rootPath, QObje
qRegisterMetaType<Image<ColorRgb>>("Image<ColorRgb>");
qRegisterMetaType<hyperion::Components>("hyperion::Components");
qRegisterMetaType<settings::type>("settings::type");
qRegisterMetaType<VideoMode>("VideoMode");
qRegisterMetaType<QMap<quint8,QJsonObject>>("QMap<quint8,QJsonObject>");
// init settings
_settingsManager = new SettingsManager(0,configFile);
@@ -113,11 +117,6 @@ HyperionDaemon::~HyperionDaemon()
delete _pyInit;
}
quint16 HyperionDaemon::getWebServerPort()
{
return _webserver->getPort();
}
void HyperionDaemon::setVideoMode(const VideoMode& mode)
{
if(_currVideoMode != mode)
@@ -135,19 +134,22 @@ const QJsonDocument HyperionDaemon::getSetting(const settings::type &type)
void HyperionDaemon::freeObjects()
{
_hyperion->clearall(true);
// destroy network first as a client might want to access pointers
delete _webserver;
// destroy network first as a client might want to access hyperion
delete _jsonServer;
delete _protoServer;
_flatBufferServer->thread()->quit();
_flatBufferServer->thread()->wait(1000);
//ssdp before webserver
_ssdp->thread()->quit();
_ssdp->thread()->wait(1000);
_webserver->thread()->quit();
_webserver->thread()->wait(1000);
delete _udpListener;
delete _bonjourBrowserWrapper;
delete _amlGrabber;
delete _dispmanx;
delete _fbGrabber;
delete _osxGrabber;
for(V4L2Wrapper* grabber : _v4l2Grabbers)
{
delete grabber;
@@ -162,7 +164,6 @@ void HyperionDaemon::freeObjects()
_osxGrabber = nullptr;
_webserver = nullptr;
_jsonServer = nullptr;
_protoServer = nullptr;
_udpListener = nullptr;
_stats = nullptr;
}
@@ -176,28 +177,40 @@ void HyperionDaemon::startNetworkServices()
_jsonServer = new JsonServer(getSetting(settings::JSONSERVER));
connect(this, &HyperionDaemon::settingsChanged, _jsonServer, &JsonServer::handleSettingsUpdate);
// Create Proto server
_protoServer = new ProtoServer(getSetting(settings::PROTOSERVER));
connect(this, &HyperionDaemon::settingsChanged, _protoServer, &ProtoServer::handleSettingsUpdate);
// Create FlatBuffer server & move to Thread
// Create FlatBuffer server in thread
_flatBufferServer = new FlatBufferServer(getSetting(settings::FLATBUFSERVER));
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
QThread* fbThread = new QThread(this);
_flatBufferServer->moveToThread(fbThread);
connect( fbThread, &QThread::started, _flatBufferServer, &FlatBufferServer::initServer );
connect( fbThread, &QThread::finished, _flatBufferServer, &QObject::deleteLater );
connect( fbThread, &QThread::finished, fbThread, &QObject::deleteLater );
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
fbThread->start();
// Create UDP listener
_udpListener = new UDPListener(getSetting(settings::UDPLISTENER));
connect(this, &HyperionDaemon::settingsChanged, _udpListener, &UDPListener::handleSettingsUpdate);
// Create Webserver
// Create Webserver in thread
_webserver = new WebServer(getSetting(settings::WEBSERVER));
QThread* wsThread = new QThread(this);
_webserver->moveToThread(wsThread);
connect( wsThread, &QThread::started, _webserver, &WebServer::initServer );
connect( wsThread, &QThread::finished, _webserver, &QObject::deleteLater );
connect( wsThread, &QThread::finished, wsThread, &QObject::deleteLater );
connect(this, &HyperionDaemon::settingsChanged, _webserver, &WebServer::handleSettingsUpdate);
wsThread->start();
// create SSDPHandler in thread
_ssdp = new SSDPHandler(_webserver, getSetting(settings::FLATBUFSERVER).object()["port"].toInt());
QThread* ssdpThread = new QThread(this);
_ssdp->moveToThread(ssdpThread);
connect( ssdpThread, &QThread::started, _ssdp, &SSDPHandler::initServer );
connect( ssdpThread, &QThread::finished, _ssdp, &QObject::deleteLater );
connect( ssdpThread, &QThread::finished, ssdpThread, &QObject::deleteLater );
connect( _webserver, &WebServer::stateChange, _ssdp, &SSDPHandler::handleWebServerStateChange);
connect(this, &HyperionDaemon::settingsChanged, _ssdp, &SSDPHandler::handleSettingsUpdate);
ssdpThread->start();
}
void HyperionDaemon::handleSettingsUpdate(const settings::type& type, const QJsonDocument& config)

View File

@@ -49,13 +49,13 @@
class Hyperion;
class SysTray;
class JsonServer;
class ProtoServer;
class UDPListener;
class Stats;
class BonjourBrowserWrapper;
class WebServer;
class SettingsManager;
class PythonInit;
class SSDPHandler;
class FlatBufferServer;
class HyperionDaemon : public QObject
@@ -68,7 +68,11 @@ public:
HyperionDaemon(QString configFile, QString rootPath, QObject *parent, const bool& logLvlOverwrite );
~HyperionDaemon();
quint16 getWebServerPort();
///
/// @brief Get webserver pointer (systray)
///
WebServer* getWebServerInstance() { return _webserver; };
///
/// @brief Get the current videoMode
///
@@ -134,7 +138,6 @@ private:
PythonInit* _pyInit;
WebServer* _webserver;
JsonServer* _jsonServer;
ProtoServer* _protoServer;
UDPListener* _udpListener;
std::vector<V4L2Wrapper*> _v4l2Grabbers;
DispmanxWrapper* _dispmanx;
@@ -144,6 +147,7 @@ private:
OsxWrapper* _osxGrabber;
Hyperion* _hyperion;
Stats* _stats;
SSDPHandler* _ssdp;
FlatBufferServer* _flatBufferServer;
unsigned _grabber_width;

View File

@@ -332,7 +332,7 @@ int main(int argc, char** argv)
{
Info(log, "start systray");
QApplication::setQuitOnLastWindowClosed(false);
SysTray tray(hyperiond, hyperiond->getWebServerPort());
SysTray tray(hyperiond);
tray.hide();
rc = (qobject_cast<QApplication *>(app.data()))->exec();
}

View File

@@ -10,23 +10,28 @@
#include <utils/ColorRgb.h>
#include <effectengine/EffectDefinition.h>
#include <webserver/WebServer.h>
#include "hyperiond.h"
#include "systray.h"
SysTray::SysTray(HyperionDaemon *hyperiond, quint16 webPort)
SysTray::SysTray(HyperionDaemon *hyperiond)
: QWidget()
, _colorDlg(this)
, _hyperiond(hyperiond)
, _webPort(webPort)
, _hyperion(nullptr)
, _webPort(8090)
{
Q_INIT_RESOURCE(resource);
// webserver port
WebServer* webserver = _hyperiond->getWebServerInstance();
connect(webserver, &WebServer::portChanged, this, &SysTray::webserverPortChanged);
_hyperion = Hyperion::getInstance();
createTrayIcon();
connect(_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
connect(_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
connect(&_colorDlg, SIGNAL(currentColorChanged(const QColor&)), this, SLOT(setColor(const QColor &)));
QIcon icon(":/hyperion-icon.png");
_trayIcon->setIcon(icon);

View File

@@ -15,7 +15,7 @@ class SysTray : public QWidget
Q_OBJECT
public:
SysTray(HyperionDaemon *hyperiond, quint16 webPort);
SysTray(HyperionDaemon *hyperiond);
~SysTray();
@@ -30,6 +30,11 @@ public slots:
private slots:
void iconActivated(QSystemTrayIcon::ActivationReason reason);
///
/// @brief is called whenever the webserver changes the port
///
void webserverPortChanged(const quint16& port) { _webPort = port; };
private:
void createTrayIcon();
@@ -44,7 +49,7 @@ private:
QMenu *_trayIconMenu;
QMenu *_trayIconEfxMenu;
QColorDialog _colorDlg;
HyperionDaemon *_hyperiond;
quint16 _webPort;
HyperionDaemon *_hyperiond;
Hyperion *_hyperion;
quint16 _webPort;
};