aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/module/ModuleManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/module/ModuleManager.h')
-rw-r--r--src/core/module/ModuleManager.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/core/module/ModuleManager.h b/src/core/module/ModuleManager.h
index 1b1133da..ace71c13 100644
--- a/src/core/module/ModuleManager.h
+++ b/src/core/module/ModuleManager.h
@@ -28,8 +28,10 @@
#pragma once
+#include <mutex>
#include <vector>
+#include "core/function/basic/GpgFunctionObject.h"
#include "core/module/Event.h"
namespace GpgFrontend::Thread {
@@ -54,15 +56,13 @@ using Namespace = std::string;
using Key = std::string;
using LPCallback = std::function<void(Namespace, Key, int, std::any)>;
-class GPGFRONTEND_CORE_EXPORT ModuleManager : public QObject {
- Q_OBJECT
+class GPGFRONTEND_CORE_EXPORT ModuleManager
+ : public SingletonFunctionObject<ModuleManager> {
public:
- ModuleManager();
+ explicit ModuleManager(int channel);
virtual ~ModuleManager() override;
- static auto GetInstance() -> ModuleMangerPtr;
-
void RegisterModule(ModulePtr);
auto IsModuleActivated(ModuleIdentifier) -> bool;
@@ -91,23 +91,23 @@ class GPGFRONTEND_CORE_EXPORT ModuleManager : public QObject {
template <typename T, typename... Args>
void RegisterModule(Args&&... args) {
- ModuleManager::GetInstance()->RegisterModule(
+ ModuleManager::GetInstance().RegisterModule(
GpgFrontend::SecureCreateSharedObject<T>(std::forward<Args>(args)...));
}
template <typename T, typename... Args>
void RegisterAndActivateModule(Args&&... args) {
- auto manager = ModuleManager::GetInstance();
+ auto& manager = ModuleManager::GetInstance();
auto module =
GpgFrontend::SecureCreateSharedObject<T>(std::forward<Args>(args)...);
- manager->RegisterModule(module);
- manager->ActiveModule(module->GetModuleIdentifier());
+ manager.RegisterModule(module);
+ manager.ActiveModule(module->GetModuleIdentifier());
}
template <typename... Args>
void TriggerEvent(const EventIdentifier& event_id, Args&&... args,
Event::EventCallback e_cb = nullptr) {
- ModuleManager::GetInstance()->TriggerEvent(
+ ModuleManager::GetInstance().TriggerEvent(
std::move(MakeEvent(event_id, std::forward<Args>(args)..., e_cb)));
}
@@ -156,7 +156,7 @@ template <typename T>
auto RetrieveRTValueTyped(const std::string& namespace_, const std::string& key)
-> std::optional<T> {
auto any_value =
- ModuleManager::GetInstance()->RetrieveRTValue(namespace_, key);
+ ModuleManager::GetInstance().RetrieveRTValue(namespace_, key);
if (any_value && any_value->type() == typeid(T)) {
return std::any_cast<T>(*any_value);
}
@@ -168,7 +168,7 @@ auto RetrieveRTValueTypedOrDefault(const std::string& namespace_,
const std::string& key,
const T& defaultValue) -> T {
auto any_value =
- ModuleManager::GetInstance()->RetrieveRTValue(namespace_, key);
+ ModuleManager::GetInstance().RetrieveRTValue(namespace_, key);
if (any_value && any_value->type() == typeid(T)) {
return std::any_cast<T>(*any_value);
}