diff options
Diffstat (limited to 'include/CommonAPI/Runtime.hpp')
-rw-r--r-- | include/CommonAPI/Runtime.hpp | 174 |
1 files changed, 81 insertions, 93 deletions
diff --git a/include/CommonAPI/Runtime.hpp b/include/CommonAPI/Runtime.hpp index 1cb4f94..8d33d48 100644 --- a/include/CommonAPI/Runtime.hpp +++ b/include/CommonAPI/Runtime.hpp @@ -15,6 +15,7 @@ #include <mutex> #include <set> +#include <CommonAPI/AttributeExtension.hpp> #include <CommonAPI/Export.hpp> #include <CommonAPI/Factory.hpp> #include <CommonAPI/Types.hpp> @@ -28,78 +29,65 @@ class Proxy; class ProxyManager; class StubBase; -template<template<typename ...> class _ProxyType, template<typename> class _AttributeExtension> -struct DefaultAttributeProxyHelper; - -template<template<typename ...> class _ProxyClass, template<typename> class _AttributeExtension> -std::shared_ptr< - typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t -> createProxyWithDefaultAttributeExtension( - const std::string &_domain, const std::string &_instance); - class Runtime { public: - COMMONAPI_EXPORT static std::string getProperty(const std::string &_name); - COMMONAPI_EXPORT static void setProperty(const std::string &_name, const std::string &_value); + COMMONAPI_EXPORT static std::string getProperty(const std::string &_name); + COMMONAPI_EXPORT static void setProperty(const std::string &_name, const std::string &_value); - COMMONAPI_EXPORT static std::shared_ptr<Runtime> get(); + COMMONAPI_EXPORT static std::shared_ptr<Runtime> get(); - COMMONAPI_EXPORT Runtime(); - COMMONAPI_EXPORT virtual ~Runtime(); + COMMONAPI_EXPORT Runtime(); + COMMONAPI_EXPORT virtual ~Runtime(); - COMMONAPI_EXPORT void init(); + COMMONAPI_EXPORT void init(); template<template<typename ...> class _ProxyClass, typename ... _AttributeExtensions> - COMMONAPI_EXPORT std::shared_ptr< + COMMONAPI_EXPORT std::shared_ptr< _ProxyClass<_AttributeExtensions...> > buildProxy(const std::string &_domain, const std::string &_instance, const ConnectionId_t &_connectionId = DEFAULT_CONNECTION_ID) { std::shared_ptr<Proxy> proxy - = createProxy(_domain, - _ProxyClass<_AttributeExtensions...>::getInterface(), - _instance, - _connectionId); + = createProxy(_domain, + _ProxyClass<_AttributeExtensions...>::getInterface(), + _instance, + _connectionId); if (proxy) { return std::make_shared<_ProxyClass<_AttributeExtensions...>>(proxy); } - else { - return nullptr; - } + return nullptr; } template<template<typename ...> class _ProxyClass, typename ... _AttributeExtensions> - COMMONAPI_EXPORT std::shared_ptr< + COMMONAPI_EXPORT std::shared_ptr< _ProxyClass<_AttributeExtensions...> > buildProxy(const std::string &_domain, const std::string &_instance, std::shared_ptr<MainLoopContext> _context) { std::shared_ptr<Proxy> proxy - = createProxy(_domain, - _ProxyClass<_AttributeExtensions...>::getInterface(), - _instance, - _context); + = createProxy(_domain, + _ProxyClass<_AttributeExtensions...>::getInterface(), + _instance, + _context); if (proxy) { return std::make_shared<_ProxyClass<_AttributeExtensions...>>(proxy); } - else { - return nullptr; - } + return nullptr; } template <template<typename ...> class _ProxyClass, template<typename> class _AttributeExtension> - COMMONAPI_EXPORT std::shared_ptr<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t> + COMMONAPI_EXPORT std::shared_ptr<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t> buildProxyWithDefaultAttributeExtension(const std::string &_domain, const std::string &_instance, - const ConnectionId_t &_connectionId = DEFAULT_CONNECTION_ID) { + const ConnectionId_t &_connectionId = DEFAULT_CONNECTION_ID) { std::shared_ptr<Proxy> proxy - = createProxy(_domain, - DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t::getInterface(), - _instance, - _connectionId); + = createProxy(_domain, + DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t::getInterface(), + _instance, + _connectionId); if (proxy) { return std::make_shared<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t>(proxy); } @@ -107,15 +95,15 @@ public: } template <template<typename ...> class _ProxyClass, template<typename> class _AttributeExtension> - COMMONAPI_EXPORT std::shared_ptr<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t> + COMMONAPI_EXPORT std::shared_ptr<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t> buildProxyWithDefaultAttributeExtension(const std::string &_domain, const std::string &_instance, std::shared_ptr<MainLoopContext> _context) { std::shared_ptr<Proxy> proxy - = createProxy(_domain, - DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t::getInterface(), - _instance, - _context); + = createProxy(_domain, + DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t::getInterface(), + _instance, + _context); if (proxy) { return std::make_shared<typename DefaultAttributeProxyHelper<_ProxyClass, _AttributeExtension>::class_t>(proxy); } @@ -123,77 +111,77 @@ public: } template<typename _Stub> - COMMONAPI_EXPORT bool registerService(const std::string &_domain, - const std::string &_instance, - std::shared_ptr<_Stub> _service, - const ConnectionId_t &_connectionId = DEFAULT_CONNECTION_ID) { - return registerStub(_domain, _Stub::StubInterface::getInterface(), _instance, _service, _connectionId); - } + COMMONAPI_EXPORT bool registerService(const std::string &_domain, + const std::string &_instance, + std::shared_ptr<_Stub> _service, + const ConnectionId_t &_connectionId = DEFAULT_CONNECTION_ID) { + return registerStub(_domain, _Stub::StubInterface::getInterface(), _instance, _service, _connectionId); + } template<typename _Stub> - COMMONAPI_EXPORT bool registerService(const std::string &_domain, - const std::string &_instance, - std::shared_ptr<_Stub> _service, - std::shared_ptr<MainLoopContext> _context) { - return registerStub(_domain, _Stub::StubInterface::getInterface(), _instance, _service, _context); + COMMONAPI_EXPORT bool registerService(const std::string &_domain, + const std::string &_instance, + std::shared_ptr<_Stub> _service, + std::shared_ptr<MainLoopContext> _context) { + return registerStub(_domain, _Stub::StubInterface::getInterface(), _instance, _service, _context); } - COMMONAPI_EXPORT bool unregisterService(const std::string &_domain, - const std::string &_interface, - const std::string &_instance) { - return unregisterStub(_domain, _interface, _instance); - } + COMMONAPI_EXPORT bool unregisterService(const std::string &_domain, + const std::string &_interface, + const std::string &_instance) { + return unregisterStub(_domain, _interface, _instance); + } - COMMONAPI_EXPORT bool registerFactory(const std::string &_ipc, std::shared_ptr<Factory> _factory); - COMMONAPI_EXPORT bool unregisterFactory(const std::string &_ipc); + COMMONAPI_EXPORT bool registerFactory(const std::string &_ipc, std::shared_ptr<Factory> _factory); + COMMONAPI_EXPORT bool unregisterFactory(const std::string &_ipc); inline const std::string &getDefaultBinding() const { return defaultBinding_; }; private: - COMMONAPI_EXPORT bool readConfiguration(); - COMMONAPI_EXPORT bool splitAddress(const std::string &, std::string &, std::string &, std::string &); + COMMONAPI_EXPORT bool readConfiguration(); + COMMONAPI_EXPORT bool splitAddress(const std::string &, std::string &, std::string &, std::string &); - COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxy(const std::string &, const std::string &, const std::string &, - const ConnectionId_t &); - COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxy(const std::string &, const std::string &, const std::string &, - std::shared_ptr<MainLoopContext>); + COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxy(const std::string &, const std::string &, const std::string &, + const ConnectionId_t &); + COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxy(const std::string &, const std::string &, const std::string &, + std::shared_ptr<MainLoopContext>); - COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxyHelper(const std::string &, const std::string &, const std::string &, - const ConnectionId_t &); - COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxyHelper(const std::string &, const std::string &, const std::string &, - std::shared_ptr<MainLoopContext>); + COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxyHelper(const std::string &, const std::string &, const std::string &, + const ConnectionId_t &); + COMMONAPI_EXPORT std::shared_ptr<Proxy> createProxyHelper(const std::string &, const std::string &, const std::string &, + std::shared_ptr<MainLoopContext>); - COMMONAPI_EXPORT bool registerStub(const std::string &, const std::string &, const std::string &, - std::shared_ptr<StubBase>, const ConnectionId_t &); - COMMONAPI_EXPORT bool registerStub(const std::string &, const std::string &, const std::string &, - std::shared_ptr<StubBase>, std::shared_ptr<MainLoopContext>); - COMMONAPI_EXPORT bool registerStubHelper(const std::string &, const std::string &, const std::string &, - std::shared_ptr<StubBase>, const ConnectionId_t &); - COMMONAPI_EXPORT bool registerStubHelper(const std::string &, const std::string &, const std::string &, - std::shared_ptr<StubBase>, std::shared_ptr<MainLoopContext>); + COMMONAPI_EXPORT bool registerStub(const std::string &, const std::string &, const std::string &, + std::shared_ptr<StubBase>, const ConnectionId_t &); + COMMONAPI_EXPORT bool registerStub(const std::string &, const std::string &, const std::string &, + std::shared_ptr<StubBase>, std::shared_ptr<MainLoopContext>); + COMMONAPI_EXPORT bool registerStubHelper(const std::string &, const std::string &, const std::string &, + std::shared_ptr<StubBase>, const ConnectionId_t &); + COMMONAPI_EXPORT bool registerStubHelper(const std::string &, const std::string &, const std::string &, + std::shared_ptr<StubBase>, std::shared_ptr<MainLoopContext>); - COMMONAPI_EXPORT bool unregisterStub(const std::string &, const std::string &, const std::string &); + COMMONAPI_EXPORT bool unregisterStub(const std::string &, const std::string &, const std::string &); - COMMONAPI_EXPORT std::string getLibrary(const std::string &, const std::string &, const std::string &, bool); - COMMONAPI_EXPORT bool loadLibrary(const std::string &); + COMMONAPI_EXPORT std::string getLibrary(const std::string &, const std::string &, const std::string &, bool); + COMMONAPI_EXPORT bool loadLibrary(const std::string &); private: - std::string defaultBinding_; - std::string defaultFolder_; - std::string defaultConfig_; + std::string defaultBinding_; + std::string defaultFolder_; + std::string defaultConfig_; - std::map<std::string, std::shared_ptr<Factory>> factories_; - std::shared_ptr<Factory> defaultFactory_; - std::map<std::string, std::map<bool, std::string>> libraries_; - std::set<std::string> loadedLibraries_; // Library name + std::map<std::string, std::shared_ptr<Factory>> factories_; + std::shared_ptr<Factory> defaultFactory_; + std::map<std::string, std::map<bool, std::string>> libraries_; + std::set<std::string> loadedLibraries_; // Library name - std::mutex mutex_; - std::mutex factoriesMutex_; - std::mutex loadMutex_; + std::mutex mutex_; + std::mutex factoriesMutex_; + std::mutex loadMutex_; - static std::map<std::string, std::string> properties_; - static std::shared_ptr<Runtime> theRuntime__; + static std::map<std::string, std::string> properties_; + static std::shared_ptr<Runtime> theRuntime__; friend class ProxyManager; }; |