Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2038)

Unified Diff: dbus/object_manager.h

Issue 2239123002: dbus: Make Bus::GetManagedObjects skip unavailable services. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove Bus::GetManagedObjects and BluezDBusManager's call to it Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dbus/object_manager.h
diff --git a/dbus/object_manager.h b/dbus/object_manager.h
index 266b53eb9a0ac3d140d468114701af3ecad17ba9..acc8d26668513d8cb599d40b75b2ce8d626ce657 100644
--- a/dbus/object_manager.h
+++ b/dbus/object_manager.h
@@ -71,8 +71,9 @@
// object_manager_->UnregisterInterface(kInterface);
// }
//
-// The D-Bus thread manager takes care of issuing the necessary call to
-// GetManagedObjects() after the implementation classes have been set up.
+// This class calls GetManagedObjects() asynchronously after the remote service
+// becomes available and additionally refreshes managed objects after the
+// service stops or restarts.
//
// The object manager interface class has one abstract method that must be
// implemented by the class to create Properties structures on demand. As well
@@ -238,8 +239,14 @@ public:
private:
friend class base::RefCountedThreadSafe<ObjectManager>;
+ // Callback for ObjectProxy::WaitForServiceToBeAvailable() that refreshes
+ // objects when the service becomes initially available if
+ // |signals_are_connected_| is already true.
+ void OnServiceInitiallyAvailable(bool service_is_available);
+
// Connects the InterfacesAdded and InterfacesRemoved signals and calls
- // GetManagedObjects. Called from OnSetupMatchRuleAndFilterComplete.
+ // GetManagedObjects if |service_initially_available_| is already true. Called
+ // from OnSetupMatchRuleAndFilterComplete.
void InitializeObjects();
// Called from the constructor to add a match rule for PropertiesChanged
@@ -326,6 +333,13 @@ public:
bool setup_success_;
bool cleanup_called_;
+ // Set to true by OnServiceInitiallyAvailable() once the service becomes
+ // initially available.
+ bool service_initially_available_;
+
+ // Set to true by InitializeObjects() once signals are connected.
+ bool signals_are_connected_;
+
// Maps the name of an interface to the implementation class used for
// instantiating PropertySet structures for that interface's properties.
typedef std::map<std::string, Interface*> InterfaceMap;
« no previous file with comments | « dbus/mock_object_manager.h ('k') | dbus/object_manager.cc » ('j') | dbus/object_manager.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698