chromeos-dbus-bindings: Add asynchronous method proxies and timeouts
Added async versions of proxy methods and also optional timeout
parameter when calling D-Bus methods. If the timeout is not specified,
a D-Bus default value is used.
BUG=chromium:431736
TEST=FEATURES=test emerge-link chromeos-dbus-bindings
Change-Id: I3104d8b3c54809c352e361b199d37a4206bb58dc
Reviewed-on: https://chromium-review.googlesource.com/233180
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/chromeos-dbus-bindings/proxy_generator_unittest.cc b/chromeos-dbus-bindings/proxy_generator_unittest.cc
index 9afc9ab..2d26a2b 100644
--- a/chromeos-dbus-bindings/proxy_generator_unittest.cc
+++ b/chromeos-dbus-bindings/proxy_generator_unittest.cc
@@ -121,8 +121,10 @@
const std::string& in_space_walk,
const std::vector<dbus::ObjectPath>& in_ramblin_man,
std::string* out_3,
- chromeos::ErrorPtr* error) {
- auto response = chromeos::dbus_utils::CallMethodAndBlock(
+ chromeos::ErrorPtr* error,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ auto response = chromeos::dbus_utils::CallMethodAndBlockWithTimeout(
+ timeout_ms,
dbus_object_proxy_,
"org.chromium.TestInterface",
"Elements",
@@ -133,10 +135,29 @@
response.get(), error, out_3);
}
+ void ElementsAsync(
+ const std::string& in_space_walk,
+ const std::vector<dbus::ObjectPath>& in_ramblin_man,
+ const base::Callback<void(const std::string&)>& success_callback,
+ const base::Callback<void(chromeos::Error*)>& error_callback,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ chromeos::dbus_utils::CallMethodWithTimeout(
+ timeout_ms,
+ dbus_object_proxy_,
+ "org.chromium.TestInterface",
+ "Elements",
+ success_callback,
+ error_callback,
+ in_space_walk,
+ in_ramblin_man);
+ }
+
bool ReturnToPatagonia(
int64_t* out_1,
- chromeos::ErrorPtr* error) {
- auto response = chromeos::dbus_utils::CallMethodAndBlock(
+ chromeos::ErrorPtr* error,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ auto response = chromeos::dbus_utils::CallMethodAndBlockWithTimeout(
+ timeout_ms,
dbus_object_proxy_,
"org.chromium.TestInterface",
"ReturnToPatagonia",
@@ -145,10 +166,25 @@
response.get(), error, out_1);
}
+ void ReturnToPatagoniaAsync(
+ const base::Callback<void(int64_t)>& success_callback,
+ const base::Callback<void(chromeos::Error*)>& error_callback,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ chromeos::dbus_utils::CallMethodWithTimeout(
+ timeout_ms,
+ dbus_object_proxy_,
+ "org.chromium.TestInterface",
+ "ReturnToPatagonia",
+ success_callback,
+ error_callback);
+ }
+
bool NiceWeatherForDucks(
bool in_1,
- chromeos::ErrorPtr* error) {
- auto response = chromeos::dbus_utils::CallMethodAndBlock(
+ chromeos::ErrorPtr* error,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ auto response = chromeos::dbus_utils::CallMethodAndBlockWithTimeout(
+ timeout_ms,
dbus_object_proxy_,
"org.chromium.TestInterface",
"NiceWeatherForDucks",
@@ -158,11 +194,28 @@
response.get(), error);
}
+ void NiceWeatherForDucksAsync(
+ bool in_1,
+ const base::Callback<void()>& success_callback,
+ const base::Callback<void(chromeos::Error*)>& error_callback,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ chromeos::dbus_utils::CallMethodWithTimeout(
+ timeout_ms,
+ dbus_object_proxy_,
+ "org.chromium.TestInterface",
+ "NiceWeatherForDucks",
+ success_callback,
+ error_callback,
+ in_1);
+ }
+
// Comment line1
// line2
bool ExperimentNumberSix(
- chromeos::ErrorPtr* error) {
- auto response = chromeos::dbus_utils::CallMethodAndBlock(
+ chromeos::ErrorPtr* error,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ auto response = chromeos::dbus_utils::CallMethodAndBlockWithTimeout(
+ timeout_ms,
dbus_object_proxy_,
"org.chromium.TestInterface",
"ExperimentNumberSix",
@@ -171,6 +224,21 @@
response.get(), error);
}
+ // Comment line1
+ // line2
+ void ExperimentNumberSixAsync(
+ const base::Callback<void()>& success_callback,
+ const base::Callback<void(chromeos::Error*)>& error_callback,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ chromeos::dbus_utils::CallMethodWithTimeout(
+ timeout_ms,
+ dbus_object_proxy_,
+ "org.chromium.TestInterface",
+ "ExperimentNumberSix",
+ success_callback,
+ error_callback);
+ }
+
private:
scoped_refptr<dbus::Bus> bus_;
std::string service_name_;
@@ -216,8 +284,10 @@
bool GetPersonInfo(
std::string* out_name,
int32_t* out_age,
- chromeos::ErrorPtr* error) {
- auto response = chromeos::dbus_utils::CallMethodAndBlock(
+ chromeos::ErrorPtr* error,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ auto response = chromeos::dbus_utils::CallMethodAndBlockWithTimeout(
+ timeout_ms,
dbus_object_proxy_,
"org.chromium.TestInterface2",
"GetPersonInfo",
@@ -226,6 +296,19 @@
response.get(), error, out_name, out_age);
}
+ void GetPersonInfoAsync(
+ const base::Callback<void(const std::string& /*name*/, int32_t /*age*/)>& success_callback,
+ const base::Callback<void(chromeos::Error*)>& error_callback,
+ int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) {
+ chromeos::dbus_utils::CallMethodWithTimeout(
+ timeout_ms,
+ dbus_object_proxy_,
+ "org.chromium.TestInterface2",
+ "GetPersonInfo",
+ success_callback,
+ error_callback);
+ }
+
private:
scoped_refptr<dbus::Bus> bus_;
std::string service_name_;