Index: dbus/bus.h |
diff --git a/dbus/bus.h b/dbus/bus.h |
index 1641699e5243f446b4faace722d355815767b060..ec6bef1ea417edfb0f4d80875875f8eb98720ecb 100644 |
--- a/dbus/bus.h |
+++ b/dbus/bus.h |
@@ -32,6 +32,7 @@ class Location; |
namespace dbus { |
class ExportedObject; |
+class ObjectManager; |
class ObjectProxy; |
// Bus is used to establish a connection with D-Bus, create object |
@@ -302,6 +303,37 @@ class CHROME_DBUS_EXPORT Bus : public base::RefCountedThreadSafe<Bus> { |
// Must be called in the origin thread. |
virtual void UnregisterExportedObject(const ObjectPath& object_path); |
+ |
+ // Gets an object manager for the given remote object path |object_path| |
+ // exported by the service |service_name|. |
+ // |
+ // Returns an existing object manager if the bus object already owns a |
+ // matching object manager, never returns NULL. |
+ // |
+ // The caller must not delete the returned object, the bus retains ownership |
+ // of all object managers. |
+ // |
+ // Must be called in the origin thread. |
+ virtual ObjectManager* GetObjectManager(const std::string& service_name, |
+ const ObjectPath& object_path); |
+ |
+ // Unregisters the object manager for the given remote object path |
+ // |object_path| exported by the srevice |service_name|. |
+ // |
+ // Getting an object manager for the same remote object after this call |
+ // will return a new object, method calls on any remaining copies of the |
+ // previous object are not permitted. |
+ // |
+ // Must be called in the origin thread. |
+ virtual void RemoveObjectManager(const std::string& service_name, |
+ const ObjectPath& object_path); |
+ |
+ // Instructs all registered object managers to retrieve their set of managed |
+ // objects from their respective remote objects. There is no need to call this |
+ // manually, this is called automatically by the D-Bus thread manager once |
+ // implementation classes are registered. |
+ virtual void GetManagedObjects(); |
+ |
// Shuts down the bus and blocks until it's done. More specifically, this |
// function does the following: |
// |
@@ -608,6 +640,13 @@ class CHROME_DBUS_EXPORT Bus : public base::RefCountedThreadSafe<Bus> { |
scoped_refptr<dbus::ExportedObject> > ExportedObjectTable; |
ExportedObjectTable exported_object_table_; |
+ // ObjectManagerTable is used to hold the object managers created by the |
+ // bus object. Key is a concatenated string of service name + object path, |
+ // like "org.chromium.TestService/org/chromium/TestObject". |
+ typedef std::map<std::string, |
+ scoped_refptr<dbus::ObjectManager> > ObjectManagerTable; |
+ ObjectManagerTable object_manager_table_; |
+ |
bool async_operations_set_up_; |
bool shutdown_completed_; |