ExperienceManager: Make LogEngine available to experience plugins

experienceplugin-logine
Simon Stürz 2025-12-16 16:29:21 +01:00
parent ab9df2711a
commit 9a34f40372
5 changed files with 20 additions and 9 deletions

View File

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

View File

@ -29,6 +29,7 @@
class ExperiencePlugin;
class JsonRPCServer;
class LogEngine;
class ThingManager;
namespace nymeaserver {
@ -39,7 +40,7 @@ class ExperienceManager : public QObject
{
Q_OBJECT
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;
@ -53,6 +54,7 @@ private:
ThingManager *m_thingManager = nullptr;
JsonRPCServer *m_jsonRpcServer = nullptr;
ServerManager *m_serverManager = nullptr;
LogEngine *m_logEngine = nullptr;
QList<ExperiencePlugin *> m_plugins;

View File

@ -159,7 +159,7 @@ void NymeaCore::init(const QStringList &additionalInterfaces, bool disableLogEng
m_serverManager->jsonServer()->registerHandler(new DebugHandler(m_serverManager->jsonServer()));
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_thingManager, &ThingManagerImplementation::loaded, this, &NymeaCore::thingManagerLoaded);

View File

@ -55,11 +55,16 @@ JsonRPCServer *ExperiencePlugin::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_jsonRpcServer = jsonRPCServer;
m_logEngine = logEngine;
init();
}

View File

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