OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "dbus/property.h" | 5 #include "dbus/property.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 | 10 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 if (property->is_valid()) { | 126 if (property->is_valid()) { |
127 property->set_valid(false); | 127 property->set_valid(false); |
128 NotifyPropertyChanged(property->name()); | 128 NotifyPropertyChanged(property->name()); |
129 } | 129 } |
130 } | 130 } |
131 | 131 |
132 if (!callback.is_null()) | 132 if (!callback.is_null()) |
133 callback.Run(response); | 133 callback.Run(response); |
134 } | 134 } |
135 | 135 |
| 136 bool PropertySet::GetAndBlock(PropertyBase* property) { |
| 137 MethodCall method_call(kPropertiesInterface, kPropertiesGet); |
| 138 MessageWriter writer(&method_call); |
| 139 writer.AppendString(interface()); |
| 140 writer.AppendString(property->name()); |
| 141 |
| 142 DCHECK(object_proxy_); |
| 143 scoped_ptr<dbus::Response> response( |
| 144 object_proxy_->CallMethodAndBlock(&method_call, |
| 145 ObjectProxy::TIMEOUT_USE_DEFAULT)); |
| 146 |
| 147 if (!response.get()) { |
| 148 LOG(WARNING) << property->name() << ": GetAndBlock: failed."; |
| 149 return false; |
| 150 } |
| 151 |
| 152 MessageReader reader(response.get()); |
| 153 if (property->PopValueFromReader(&reader)) { |
| 154 property->set_valid(true); |
| 155 NotifyPropertyChanged(property->name()); |
| 156 } else { |
| 157 if (property->is_valid()) { |
| 158 property->set_valid(false); |
| 159 NotifyPropertyChanged(property->name()); |
| 160 } |
| 161 } |
| 162 return true; |
| 163 } |
| 164 |
136 void PropertySet::GetAll() { | 165 void PropertySet::GetAll() { |
137 MethodCall method_call(kPropertiesInterface, kPropertiesGetAll); | 166 MethodCall method_call(kPropertiesInterface, kPropertiesGetAll); |
138 MessageWriter writer(&method_call); | 167 MessageWriter writer(&method_call); |
139 writer.AppendString(interface()); | 168 writer.AppendString(interface()); |
140 | 169 |
141 DCHECK(object_proxy_); | 170 DCHECK(object_proxy_); |
142 object_proxy_->CallMethod(&method_call, | 171 object_proxy_->CallMethod(&method_call, |
143 ObjectProxy::TIMEOUT_USE_DEFAULT, | 172 ObjectProxy::TIMEOUT_USE_DEFAULT, |
144 base::Bind(&PropertySet::OnGetAll, | 173 base::Bind(&PropertySet::OnGetAll, |
145 weak_ptr_factory_.GetWeakPtr())); | 174 weak_ptr_factory_.GetWeakPtr())); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 bool PropertySet::SetAndBlock(PropertyBase* property) { | 206 bool PropertySet::SetAndBlock(PropertyBase* property) { |
178 MethodCall method_call(kPropertiesInterface, kPropertiesSet); | 207 MethodCall method_call(kPropertiesInterface, kPropertiesSet); |
179 MessageWriter writer(&method_call); | 208 MessageWriter writer(&method_call); |
180 writer.AppendString(interface()); | 209 writer.AppendString(interface()); |
181 writer.AppendString(property->name()); | 210 writer.AppendString(property->name()); |
182 property->AppendSetValueToWriter(&writer); | 211 property->AppendSetValueToWriter(&writer); |
183 | 212 |
184 DCHECK(object_proxy_); | 213 DCHECK(object_proxy_); |
185 scoped_ptr<dbus::Response> response( | 214 scoped_ptr<dbus::Response> response( |
186 object_proxy_->CallMethodAndBlock(&method_call, | 215 object_proxy_->CallMethodAndBlock(&method_call, |
187 ObjectProxy::TIMEOUT_USE_DEFAULT)); | 216 ObjectProxy::TIMEOUT_USE_DEFAULT)); |
188 if (response.get()) | 217 if (response.get()) |
189 return true; | 218 return true; |
190 return false; | 219 return false; |
191 } | 220 } |
192 | 221 |
193 void PropertySet::OnSet(PropertyBase* property, | 222 void PropertySet::OnSet(PropertyBase* property, |
194 SetCallback callback, | 223 SetCallback callback, |
195 Response* response) { | 224 Response* response) { |
196 LOG_IF(WARNING, !response) << property->name() << ": Set: failed."; | 225 LOG_IF(WARNING, !response) << property->name() << ": Set: failed."; |
197 if (!callback.is_null()) | 226 if (!callback.is_null()) |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 template class Property<double>; | 671 template class Property<double>; |
643 template class Property<std::string>; | 672 template class Property<std::string>; |
644 template class Property<ObjectPath>; | 673 template class Property<ObjectPath>; |
645 template class Property<std::vector<std::string> >; | 674 template class Property<std::vector<std::string> >; |
646 template class Property<std::vector<ObjectPath> >; | 675 template class Property<std::vector<ObjectPath> >; |
647 template class Property<std::vector<uint8> >; | 676 template class Property<std::vector<uint8> >; |
648 template class Property<std::map<std::string, std::string>>; | 677 template class Property<std::map<std::string, std::string>>; |
649 template class Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>; | 678 template class Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>; |
650 | 679 |
651 } // namespace dbus | 680 } // namespace dbus |
OLD | NEW |