summaryrefslogtreecommitdiff
path: root/include/CommonAPI/Runtime.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/CommonAPI/Runtime.hpp')
-rw-r--r--include/CommonAPI/Runtime.hpp174
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;
};