Index: sync/notifier/object_id_state_map.cc |
diff --git a/sync/notifier/object_id_state_map.cc b/sync/notifier/object_id_state_map.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d3b7f782172680c0398b6002cfdb47ddef6361f |
--- /dev/null |
+++ b/sync/notifier/object_id_state_map.cc |
@@ -0,0 +1,59 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "sync/notifier/object_id_state_map.h" |
+ |
+namespace syncer { |
+ |
+ObjectIdSet ObjectIdStateMapToSet(const ObjectIdStateMap& id_state_map) { |
+ ObjectIdSet ids; |
+ for (ObjectIdStateMap::const_iterator it = id_state_map.begin(); |
+ it != id_state_map.end(); ++it) { |
+ ids.insert(it->first); |
+ } |
+ return ids; |
+} |
+ |
+ObjectIdStateMap ObjectIdSetToStateMap(const ObjectIdSet& ids, |
+ const std::string& payload) { |
+ ObjectIdStateMap id_state_map; |
+ for (ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) { |
+ // TODO(dcheng): Do we need to provide a way to set AckHandle? |
+ id_state_map[*it].payload = payload; |
+ } |
+ return id_state_map; |
+} |
+ |
+ModelTypeStateMap ObjectIdStateMapToModelTypeStateMap( |
+ const ObjectIdStateMap& id_state_map) { |
+ ModelTypeStateMap type_state_map; |
+ for (ObjectIdStateMap::const_iterator it = id_state_map.begin(); |
+ it != id_state_map.end(); ++it) { |
+ ModelType model_type; |
+ if (!ObjectIdToRealModelType(it->first, &model_type)) { |
+ DLOG(WARNING) << "Invalid object ID: " |
+ << ObjectIdToString(it->first); |
+ continue; |
+ } |
+ type_state_map[model_type] = it->second; |
+ } |
+ return type_state_map; |
+} |
+ |
+ObjectIdStateMap ModelTypeStateMapToObjectIdStateMap( |
+ const ModelTypeStateMap& type_state_map) { |
+ ObjectIdStateMap id_state_map; |
+ for (ModelTypeStateMap::const_iterator it = type_state_map.begin(); |
+ it != type_state_map.end(); ++it) { |
+ invalidation::ObjectId id; |
+ if (!RealModelTypeToObjectId(it->first, &id)) { |
+ DLOG(WARNING) << "Invalid model type " << it->first; |
+ continue; |
+ } |
+ id_state_map[id] = it->second; |
+ } |
+ return id_state_map; |
+} |
+ |
+} // namespace syncer |