Index: dbus/bus.h |
diff --git a/dbus/bus.h b/dbus/bus.h |
index e4b615e2b4875b8b2b89c4c79091a35a2d55c126..e632e9ab09521f4e7caec2323bbc0a61a948197b 100644 |
--- a/dbus/bus.h |
+++ b/dbus/bus.h |
@@ -7,6 +7,7 @@ |
#define DBUS_BUS_H_ |
#pragma once |
+#include <map> |
#include <set> |
#include <string> |
#include <dbus/dbus.h> |
@@ -55,8 +56,8 @@ class ObjectProxy; |
// Note that it's hard to tell if a libdbus function is actually blocking |
// or not (ex. dbus_bus_request_name() internally calls |
// dbus_connection_send_with_reply_and_block(), which is a blocking |
-// call). To err on the side, we consider all libdbus functions that deal |
-// with the connection to dbus-damoen to be blocking. |
+// call). To err on the safe side, we consider all libdbus functions that |
+// deal with the connection to dbus-damoen to be blocking. |
// |
// EXAMPLE USAGE: |
// |
@@ -164,8 +165,15 @@ class Bus : public base::RefCountedThreadSafe<Bus> { |
explicit Bus(const Options& options); |
// Gets the object proxy for the given service name and the object path. |
- // The caller must not delete the returned object. The bus will own the |
- // object. Never returns NULL. |
+ // The caller must not delete the returned object. |
+ // |
+ // Returns an existing object proxy if the bus object already owns the |
+ // object proxy for the given service name and the object path. |
+ // Never returns NULL. |
+ // |
+ // The bus will own all object proxies created by the bus, to ensure |
+ // that the object proxies are detached from remote objects at the |
+ // shutdown time of the bus. |
// |
// The object proxy is used to call methods of remote objects, and |
// receive signals from them. |
@@ -178,8 +186,15 @@ class Bus : public base::RefCountedThreadSafe<Bus> { |
const std::string& object_path); |
// Gets the exported object for the given service name and the object |
- // path. The caller must not delete the returned object. The bus will |
- // own the object. Never returns NULL. |
+ // path. The caller must not delete the returned object. |
+ // |
+ // Returns an existing exported object if the bus object already owns |
+ // the exported object for the given service name and the object path. |
+ // Never returns NULL. |
+ // |
+ // The bus will own all exported objects created by the bus, to ensure |
+ // that the exported objects are unregistered at the shutdown time of |
+ // the bus. |
// |
// The exported object is used to export methods of local objects, and |
// send signal from them. |
@@ -416,8 +431,19 @@ class Bus : public base::RefCountedThreadSafe<Bus> { |
std::set<std::string> registered_object_paths_; |
std::set<DBusHandleMessageFunction> filter_functions_added_; |
- std::vector<scoped_refptr<dbus::ObjectProxy> > object_proxies_; |
- std::vector<scoped_refptr<dbus::ExportedObject> > exported_objects_; |
+ // ObjectProxyTable is used to hold the object proxies 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::ObjectProxy> > ObjectProxyTable; |
+ ObjectProxyTable object_proxy_table_; |
+ |
+ // ExportedObjectTable is used to hold the exported objects 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::ExportedObject> > ExportedObjectTable; |
+ ExportedObjectTable exported_object_table_; |
bool async_operations_are_set_up_; |