Switchboard Extension SDK
Loading...
Searching...
No Matches
ExtensionManager.hpp
1//
2// ExtensionManager.hpp
3// SwitchboardSDK
4//
5// Created by Balazs Kiss on 30/08/2024.
6//
7
8#pragma once
9
10#include <switchboard/export.h>
11#include <switchboard_core/Extension.hpp>
12#include <map>
13#include <string>
14#include <vector>
15
16namespace switchboard {
17
18class ExtensionLoader;
19
25constexpr const char* DYNAMIC_EXTENSION_NAME_PREFIX = "dynamic-";
26
30class SWITCHBOARDSDK_EXPORT ExtensionManager final {
31public:
36
45 void registerExtension(std::shared_ptr<Extension> extension);
46
55 Result<void> initializeExtension(const std::string& extensionName, const SBAnyMap& config);
56
64 Result<void> deinitializeExtension(const std::string& extensionName);
65
70
77 std::vector<std::string> getExtensionNames() const;
78
79private:
80 // Only the loader may open the window below.
81 friend class ExtensionLoader;
82
84 void beginDynamicExtensionLoad();
85
87 std::string endDynamicExtensionLoad();
88
89 static ExtensionManager* sharedInstance;
90
91 std::map<std::string, std::shared_ptr<Extension>> extensions;
92
93 bool dynamicExtensionLoadInProgress = false;
94 std::string nameRegisteredDuringLoad;
95};
96
97}
Manages the extensions of the Switchboard SDK.
Definition ExtensionManager.hpp:30
void deinitializeAllExtensions()
Deinitializes all registered extensions.
Result< void > initializeExtension(const std::string &extensionName, const SBAnyMap &config)
Initializes an extension with the given configuration.
static ExtensionManager & getInstance()
Gets the shared instance of the ExtensionManager.
void registerExtension(std::shared_ptr< Extension > extension)
Registers an extension.
Result< void > deinitializeExtension(const std::string &extensionName)
Deinitializes an extension.
std::vector< std::string > getExtensionNames() const
Returns the names of all currently registered (loaded) extensions, both compiled-in and dynamically l...