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_OBJECT_MANAGER_H_
\r
5 #define COMMONAPI_DBUS_DBUS_OBJECT_MANAGER_H_
\r
7 #include "DBusMessage.h"
\r
8 #include "DBusConnection.h"
\r
10 namespace CommonAPI {
\r
13 // objectPath, interfaceName
\r
14 typedef std::function<bool(const DBusMessage&)> DBusMessageInterfaceHandler;
\r
15 typedef std::pair<std::string, std::string> DBusInterfaceHandlerPath;
\r
16 typedef DBusInterfaceHandlerPath DBusInterfaceHandlerToken;
\r
18 class DBusConnection;
\r
20 class DBusObjectManager {
\r
22 DBusObjectManager(const std::shared_ptr<DBusConnection>&);
\r
26 const DBusInterfaceHandlerToken registerInterfaceHandlerForDBusObject(const std::string& objectPath,
\r
27 const std::string& interfaceName,
\r
28 const DBusMessageInterfaceHandler& dbusMessageInterfaceHandler);
\r
30 DBusInterfaceHandlerToken registerInterfaceHandler(const std::string& objectPath,
\r
31 const std::string& interfaceName,
\r
32 const DBusMessageInterfaceHandler& dbusMessageInterfaceHandler);
\r
34 void unregisterInterfaceHandler(const DBusInterfaceHandlerToken& dbusInterfaceHandlerToken);
\r
36 bool handleMessage(const DBusMessage&) const;
\r
40 void addLibdbusObjectPathHandler(const std::string& objectPath);
\r
41 void removeLibdbusObjectPathHandler(const std::string& objectPath);
\r
43 bool onGetDBusObjectManagerData(const DBusMessage& callMessage);
\r
45 typedef std::unordered_map<DBusInterfaceHandlerPath, DBusMessageInterfaceHandler> DBusRegisteredObjectsTable;
\r
46 DBusRegisteredObjectsTable dbusRegisteredObjectsTable_;
\r
48 std::shared_ptr<DBusConnection> dbusConnection_;
\r
52 } // namespace CommonAPI
\r
54 #endif // COMMONAPI_DBUS_DBUS_OBJECT_MANAGER_H_
\r