Merge PR #725: ExperienceManager: Provide LogEngine access to experience plugins

This commit is contained in:
jenkins 2026-01-19 10:09:53 +01:00
commit d15910aef7
5 changed files with 20 additions and 9 deletions

View File

@ -26,7 +26,7 @@
#include "experiences/experienceplugin.h" #include "experiences/experienceplugin.h"
#include "servermanager.h" #include "servermanager.h"
#include "jsonrpc/jsonrpcserverimplementation.h" #include "jsonrpc/jsonrpcserver.h"
#include "loggingcategories.h" #include "loggingcategories.h"
#include <QCoreApplication> #include <QCoreApplication>
@ -36,11 +36,12 @@
namespace nymeaserver { namespace nymeaserver {
ExperienceManager::ExperienceManager(ThingManager *thingManager, JsonRPCServer *jsonRpcServer, ServerManager *serverManager, QObject *parent) : ExperienceManager::ExperienceManager(ThingManager *thingManager, JsonRPCServer *jsonRpcServer, ServerManager *serverManager, LogEngine *logEngine, QObject *parent) :
QObject{parent}, QObject{parent},
m_thingManager{thingManager}, m_thingManager{thingManager},
m_jsonRpcServer{jsonRpcServer}, m_jsonRpcServer{jsonRpcServer},
m_serverManager{serverManager} m_serverManager{serverManager},
m_logEngine{logEngine}
{ {
staticMetaObject.invokeMethod(this, "loadPlugins", Qt::QueuedConnection); staticMetaObject.invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
@ -124,7 +125,7 @@ void ExperienceManager::loadExperiencePlugin(const QString &file)
qCDebug(dcExperiences()) << "Loaded experience plugin:" << loader.fileName(); qCDebug(dcExperiences()) << "Loaded experience plugin:" << loader.fileName();
m_plugins.append(plugin); m_plugins.append(plugin);
plugin->setParent(this); plugin->setParent(this);
plugin->initPlugin(m_thingManager, m_jsonRpcServer); plugin->initPlugin(m_thingManager, m_jsonRpcServer, m_logEngine);
if (plugin->webServerResource()) { if (plugin->webServerResource()) {
m_serverManager->registerWebServerResource(plugin->webServerResource()); m_serverManager->registerWebServerResource(plugin->webServerResource());
@ -136,7 +137,7 @@ void ExperienceManager::loadExperiencePlugin(ExperiencePlugin *experiencePlugin)
qCDebug(dcExperiences()) << "Adding experience plugin:" << experiencePlugin; qCDebug(dcExperiences()) << "Adding experience plugin:" << experiencePlugin;
m_plugins.append(experiencePlugin); m_plugins.append(experiencePlugin);
experiencePlugin->setParent(this); experiencePlugin->setParent(this);
experiencePlugin->initPlugin(m_thingManager, m_jsonRpcServer); experiencePlugin->initPlugin(m_thingManager, m_jsonRpcServer, m_logEngine);
if (experiencePlugin->webServerResource()) { if (experiencePlugin->webServerResource()) {
m_serverManager->registerWebServerResource(experiencePlugin->webServerResource()); m_serverManager->registerWebServerResource(experiencePlugin->webServerResource());

View File

@ -29,6 +29,7 @@
class ExperiencePlugin; class ExperiencePlugin;
class JsonRPCServer; class JsonRPCServer;
class LogEngine;
class ThingManager; class ThingManager;
namespace nymeaserver { namespace nymeaserver {
@ -39,7 +40,7 @@ class ExperienceManager : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ExperienceManager(ThingManager *thingManager, JsonRPCServer *jsonRpcServer, ServerManager *serverManager, QObject *parent = nullptr); explicit ExperienceManager(ThingManager *thingManager, JsonRPCServer *jsonRpcServer, ServerManager *serverManager, LogEngine *logEngine = nullptr, QObject *parent = nullptr);
QList<ExperiencePlugin *> plugins() const; QList<ExperiencePlugin *> plugins() const;
@ -53,6 +54,7 @@ private:
ThingManager *m_thingManager = nullptr; ThingManager *m_thingManager = nullptr;
JsonRPCServer *m_jsonRpcServer = nullptr; JsonRPCServer *m_jsonRpcServer = nullptr;
ServerManager *m_serverManager = nullptr; ServerManager *m_serverManager = nullptr;
LogEngine *m_logEngine = nullptr;
QList<ExperiencePlugin *> m_plugins; QList<ExperiencePlugin *> m_plugins;

View File

@ -160,7 +160,7 @@ void NymeaCore::init(const QStringList &additionalInterfaces, bool disableLogEng
m_serverManager->jsonServer()->registerHandler(new DebugHandler(m_serverManager->jsonServer())); m_serverManager->jsonServer()->registerHandler(new DebugHandler(m_serverManager->jsonServer()));
qCDebug(dcCore()) << "Loading experiences"; qCDebug(dcCore()) << "Loading experiences";
m_experienceManager = new ExperienceManager(m_thingManager, m_serverManager->jsonServer(), m_serverManager, this); m_experienceManager = new ExperienceManager(m_thingManager, m_serverManager->jsonServer(), m_serverManager, m_logEngine, this);
connect(m_configuration, &NymeaConfiguration::serverNameChanged, m_serverManager, &ServerManager::setServerName); connect(m_configuration, &NymeaConfiguration::serverNameChanged, m_serverManager, &ServerManager::setServerName);
connect(m_thingManager, &ThingManagerImplementation::loaded, this, &NymeaCore::thingManagerLoaded); connect(m_thingManager, &ThingManagerImplementation::loaded, this, &NymeaCore::thingManagerLoaded);

View File

@ -55,11 +55,16 @@ JsonRPCServer *ExperiencePlugin::jsonRpcServer()
return m_jsonRpcServer; return m_jsonRpcServer;
} }
LogEngine *ExperiencePlugin::logEngine()
{
return m_logEngine;
}
void ExperiencePlugin::initPlugin(ThingManager *deviceManager, JsonRPCServer *jsonRPCServer) void ExperiencePlugin::initPlugin(ThingManager *deviceManager, JsonRPCServer *jsonRPCServer, LogEngine *logEngine)
{ {
m_thingManager = deviceManager; m_thingManager = deviceManager;
m_jsonRpcServer = jsonRPCServer; m_jsonRpcServer = jsonRPCServer;
m_logEngine = logEngine;
init(); init();
} }

View File

@ -27,6 +27,7 @@
#include <QObject> #include <QObject>
class LogEngine;
class ThingManager; class ThingManager;
class JsonRPCServer; class JsonRPCServer;
class WebServerResource; class WebServerResource;
@ -49,13 +50,15 @@ public:
protected: protected:
ThingManager *thingManager(); ThingManager *thingManager();
JsonRPCServer *jsonRpcServer(); JsonRPCServer *jsonRpcServer();
LogEngine *logEngine();
private: private:
friend class nymeaserver::ExperienceManager; friend class nymeaserver::ExperienceManager;
void initPlugin(ThingManager *thingManager, JsonRPCServer *jsonRPCServer); void initPlugin(ThingManager *thingManager, JsonRPCServer *jsonRPCServer, LogEngine *logEngine = nullptr);
ThingManager *m_thingManager = nullptr; ThingManager *m_thingManager = nullptr;
JsonRPCServer *m_jsonRpcServer = nullptr; JsonRPCServer *m_jsonRpcServer = nullptr;
LogEngine *m_logEngine = nullptr;
}; };