Initial import to Git
[profile/ivi/common-api-dbus-runtime.git] / src / CommonAPI / DBus / DBusFactory.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public\r
2  * License, v. 2.0. If a copy of the MPL was not distributed with this\r
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\r
4 #ifndef COMMONAPI_DBUS_DBUS_FACTORY_H_\r
5 #define COMMONAPI_DBUS_DBUS_FACTORY_H_\r
6 \r
7 #include <thread>\r
8 \r
9 #include <CommonAPI/Factory.h>\r
10 \r
11 #include "CommonAPI/DBus/DBusStubAdapter.h"\r
12 #include "DBusConnection.h"\r
13 \r
14 namespace CommonAPI {\r
15 namespace DBus {\r
16 \r
17 typedef std::shared_ptr<DBusProxy> (*DBusProxyFactoryFunction) (const char* busName, const char* objectPath, std::shared_ptr<DBusProxyConnection> dbusProxyConnection);\r
18 typedef std::shared_ptr<DBusStubAdapter> (*DBusAdapterFactoryFunction) (std::string busName, std::string objectPath, std::shared_ptr<DBusProxyConnection> dbusProxyConnection, std::shared_ptr<StubBase> stubBase);\r
19 \r
20 class DBusFactory: public Factory {\r
21  public:\r
22     DBusFactory(std::shared_ptr<Runtime> runtime, const MiddlewareInfo* middlewareInfo);\r
23     virtual ~DBusFactory();\r
24 \r
25     static void registerProxyFactoryMethod(std::string interfaceName, DBusProxyFactoryFunction proxyFactoryFunction);\r
26     static void registerAdapterFactoryMethod(std::string interfaceName, DBusAdapterFactoryFunction adapterFactoryMethod);\r
27 \r
28     virtual std::vector<std::string> getAvailableServiceInstances(const std::string& serviceInterfaceName, const std::string& serviceDomainName = "local");\r
29 \r
30     virtual bool isServiceInstanceAlive(const std::string& serviceInstanceID, const std::string& serviceInterfaceName, const std::string& serviceDomainName = "local");\r
31 \r
32     virtual std::shared_ptr<Proxy> createProxy(const char* interfaceName, const std::string& participantId, const std::string& domain);\r
33 \r
34     virtual std::shared_ptr<StubAdapter> createAdapter(std::shared_ptr<StubBase> stubBase, const char* interfaceName, const std::string& participantId, const std::string& domain);\r
35 \r
36  private:\r
37     std::shared_ptr<CommonAPI::DBus::DBusConnection> dbusConnection_;\r
38     std::string acquiredConnectionName_;\r
39 };\r
40 \r
41 } // namespace DBus\r
42 } // namespace CommonAPI\r
43 \r
44 #endif // COMMONAPI_DBUS_DBUS_FACTORY_H_\r