shill: serialize Manager.Services as an array of object paths
Previously, we serialized this property as an array of strings.
That was contrary to the API documentation, and caused a crash
in update_engine_client.
BUG=chromium-os:27987
TEST=unit tests, manual
Manual testing: ran on device, and checked that update_engine_client
was able to identify the technology of the default service.
Collateral change: replace PathArray with Paths (and similar
for variations, such as path_array). This makes the naming of
Paths conform to the style used for Strings, Stringmaps, etc.
Change-Id: I4ee4b9df04d3f006ab974c2092f6e515ebf5a9b8
Reviewed-on: https://gerrit.chromium.org/gerrit/18592
Commit-Ready: mukesh agrawal <quiche@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/property_store.cc b/property_store.cc
index d3bd527..8e8a35c 100644
--- a/property_store.cc
+++ b/property_store.cc
@@ -147,6 +147,12 @@
ReadablePropertyConstIterator<KeyValueStore>(key_value_store_properties_);
}
+ReadablePropertyConstIterator<RpcIdentifiers>
+PropertyStore::GetRpcIdentifiersPropertiesIter() const {
+ return ReadablePropertyConstIterator<RpcIdentifiers>(
+ rpc_identifiers_properties_);
+}
+
ReadablePropertyConstIterator<string>
PropertyStore::GetStringPropertiesIter() const {
return ReadablePropertyConstIterator<string>(string_properties_);
@@ -400,6 +406,14 @@
key_value_store_properties_[name] = acc;
}
+void PropertyStore::RegisterDerivedRpcIdentifiers(
+ const string &name,
+ const RpcIdentifiersAccessor &accessor) {
+ DCHECK(!Contains(name) || ContainsKey(rpc_identifiers_properties_, name))
+ << "(Already registered " << name << ")";
+ rpc_identifiers_properties_[name] = accessor;
+}
+
void PropertyStore::RegisterDerivedString(const string &name,
const StringAccessor &accessor) {
DCHECK(!Contains(name) || ContainsKey(string_properties_, name))