diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 07:53:09 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-02 07:53:09 +0000 |
commit | 118090c51632bd1f19578a3240e79d1c44f1a52b (patch) | |
tree | 248b36b3e07135fdab94c51609a8c2a2b1de0519 /dbus/object_proxy.h | |
parent | cc8533326529a64e4aa7db0081025844665cbe40 (diff) | |
download | chromium_src-118090c51632bd1f19578a3240e79d1c44f1a52b.zip chromium_src-118090c51632bd1f19578a3240e79d1c44f1a52b.tar.gz chromium_src-118090c51632bd1f19578a3240e79d1c44f1a52b.tar.bz2 |
dbus: Add ObjectProxy::WaitForServiceToBeAvailable()
Split ConnectToNameOwnerChangedSignal() from ConnectToSignalInternal().
Add WaitForServiceToBeAvailable()
Add test.
BUG=141009
TEST=dbus_unittests
R=satorux@chromium.org
Review URL: https://codereview.chromium.org/25488002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@226428 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'dbus/object_proxy.h')
-rw-r--r-- | dbus/object_proxy.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/dbus/object_proxy.h b/dbus/object_proxy.h index e618d5d..b183be2 100644 --- a/dbus/object_proxy.h +++ b/dbus/object_proxy.h @@ -77,6 +77,10 @@ class CHROME_DBUS_EXPORT ObjectProxy const std::string& old_owner, const std::string& new_owner)> NameOwnerChangedCallback; + // Called when the service becomes available. + typedef base::Callback<void( + bool service_is_available)> WaitForServiceToBeAvailableCallback; + // Called when the object proxy is connected to the signal. // Parameters: // - the interface name. @@ -152,6 +156,10 @@ class CHROME_DBUS_EXPORT ObjectProxy // represented by |service_name_|. virtual void SetNameOwnerChangedCallback(NameOwnerChangedCallback callback); + // Runs the callback as soon as the service becomes available. + virtual void WaitForServiceToBeAvailable( + WaitForServiceToBeAvailableCallback callback); + // Detaches from the remote object. The Bus object will take care of // detaching so you don't have to do this manually. // @@ -208,11 +216,17 @@ class CHROME_DBUS_EXPORT ObjectProxy static void OnPendingCallIsCompleteThunk(DBusPendingCall* pending_call, void* user_data); + // Connects to NameOwnerChanged signal. + bool ConnectToNameOwnerChangedSignal(); + // Helper function for ConnectToSignal(). bool ConnectToSignalInternal(const std::string& interface_name, const std::string& signal_name, SignalCallback signal_callback); + // Helper function for WaitForServiceToBeAvailable(). + void WaitForServiceToBeAvailableInternal(); + // Handles the incoming request messages and dispatches to the signal // callbacks. DBusHandlerResult HandleMessage(DBusConnection* connection, @@ -262,6 +276,9 @@ class CHROME_DBUS_EXPORT ObjectProxy void RunNameOwnerChangedCallback(const std::string& old_owner, const std::string& new_owner); + // Runs |wait_for_service_to_be_available_callbacks_|. + void RunWaitForServiceToBeAvailableCallbacks(bool service_is_available); + scoped_refptr<Bus> bus_; std::string service_name_; ObjectPath object_path_; @@ -277,6 +294,10 @@ class CHROME_DBUS_EXPORT ObjectProxy // The callback called when NameOwnerChanged signal is received. NameOwnerChangedCallback name_owner_changed_callback_; + // Called when the service becomes available. + std::vector<WaitForServiceToBeAvailableCallback> + wait_for_service_to_be_available_callbacks_; + std::set<std::string> match_rules_; const bool ignore_service_unknown_errors_; |