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

Unified Diff: chromeos/dbus/shill_client_helper.cc

Issue 10949030: This converts the Shill clients to allow propagation of shill errors (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 3 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: chromeos/dbus/shill_client_helper.cc
diff --git a/chromeos/dbus/shill_client_helper.cc b/chromeos/dbus/shill_client_helper.cc
index bd421bcfa453f26f02bd5b809d0dc0f2038d275a..6b68784a28ea43675e62989f5a2fb5fa91f68784 100644
--- a/chromeos/dbus/shill_client_helper.cc
+++ b/chromeos/dbus/shill_client_helper.cc
@@ -14,7 +14,7 @@
namespace chromeos {
ShillClientHelper::ShillClientHelper(dbus::Bus* bus,
- dbus::ObjectProxy* proxy)
+ dbus::ObjectProxy* proxy)
: blocking_method_caller_(bus, proxy),
proxy_(proxy),
weak_ptr_factory_(this) {
@@ -23,13 +23,14 @@ ShillClientHelper::ShillClientHelper(dbus::Bus* bus,
ShillClientHelper::~ShillClientHelper() {
}
-void ShillClientHelper::SetPropertyChangedHandler(
- const PropertyChangedHandler& handler) {
- property_changed_handler_ = handler;
+void ShillClientHelper::AddPropertyChangedObserver(
+ PropertyChangedObserver* obs) {
hashimoto 2012/09/21 11:52:01 Rename this to |observer|
Greg Spencer (Chromium) 2012/09/21 22:03:47 Done.
+ observer_list_.AddObserver(obs);
}
-void ShillClientHelper::ResetPropertyChangedHandler() {
- property_changed_handler_.Reset();
+void ShillClientHelper::RemovePropertyChangedObserver(
+ PropertyChangedObserver* obs) {
hashimoto 2012/09/21 11:52:01 ditto.
Greg Spencer (Chromium) 2012/09/21 22:03:47 Done.
+ observer_list_.RemoveObserver(obs);
}
void ShillClientHelper::MonitorPropertyChanged(
@@ -62,6 +63,21 @@ void ShillClientHelper::CallObjectPathMethod(
callback));
}
+void ShillClientHelper::CallObjectPathMethodWithErrorCallback(
+ dbus::MethodCall* method_call,
+ const ObjectPathDBusMethodCallback& callback,
+ const ErrorCallback& error_callback) {
+ proxy_->CallMethodWithErrorCallback(
+ method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ base::Bind(&ShillClientHelper::OnObjectPathMethod,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback),
+ base::Bind(&ShillClientHelper::OnError,
+ weak_ptr_factory_.GetWeakPtr(),
+ error_callback));
+}
+
void ShillClientHelper::CallDictionaryValueMethod(
dbus::MethodCall* method_call,
const DictionaryValueCallback& callback) {
@@ -144,7 +160,7 @@ base::DictionaryValue* ShillClientHelper::CallDictionaryValueMethodAndBlock(
// static
void ShillClientHelper::AppendValueDataAsVariant(dbus::MessageWriter* writer,
- const base::Value& value) {
+ const base::Value& value) {
// Support basic types and string-to-string dictionary.
switch (value.GetType()) {
case base::Value::TYPE_DICTIONARY: {
@@ -185,14 +201,14 @@ void ShillClientHelper::AppendValueDataAsVariant(dbus::MessageWriter* writer,
}
void ShillClientHelper::OnSignalConnected(const std::string& interface,
- const std::string& signal,
- bool success) {
+ const std::string& signal,
+ bool success) {
LOG_IF(ERROR, !success) << "Connect to " << interface << " " << signal
<< " failed.";
}
void ShillClientHelper::OnPropertyChanged(dbus::Signal* signal) {
- if (property_changed_handler_.is_null())
+ if (!observer_list_.might_have_observers())
hashimoto 2012/09/21 11:52:01 This early exit was necessary since calling Run()
Greg Spencer (Chromium) 2012/09/21 22:03:47 Sure, but why not early exit anyhow, to avoid havi
return;
dbus::MessageReader reader(signal);
@@ -202,11 +218,14 @@ void ShillClientHelper::OnPropertyChanged(dbus::Signal* signal) {
scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader));
if (!value.get())
return;
- property_changed_handler_.Run(name, *value);
+
+ FOR_EACH_OBSERVER(PropertyChangedObserver, observer_list_,
+ OnPropertyChanged(name, *value));
+
}
void ShillClientHelper::OnVoidMethod(const VoidDBusMethodCallback& callback,
- dbus::Response* response) {
+ dbus::Response* response) {
if (!response) {
callback.Run(DBUS_METHOD_CALL_FAILURE);
return;
@@ -272,7 +291,7 @@ void ShillClientHelper::OnDictionaryValueMethodWithErrorCallback(
}
void ShillClientHelper::OnError(const ErrorCallback& error_callback,
- dbus::ErrorResponse* response) {
+ dbus::ErrorResponse* response) {
std::string error_name;
std::string error_message;
if (response) {

Powered by Google App Engine
This is Rietveld 408576698