// Copyright 2013 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. #ifndef SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_ #define SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_ #include <map> #include <vector> #include "sync/base/sync_export.h" #include "sync/internal_api/public/base/invalidation.h" #include "sync/notifier/invalidation_util.h" #include "sync/notifier/single_object_invalidation_set.h" namespace syncer { // A set of notifications with some helper methods to organize them by object ID // and version number. class SYNC_EXPORT ObjectIdInvalidationMap { public: // Creates an invalidation map that includes an 'unknown version' // invalidation for each specified ID in |ids|. static ObjectIdInvalidationMap InvalidateAll(const ObjectIdSet& ids); ObjectIdInvalidationMap(); ~ObjectIdInvalidationMap(); // Returns set of ObjectIds for which at least one invalidation is present. ObjectIdSet GetObjectIds() const; // Returns true if this map contains no invalidations. bool Empty() const; // Returns true if both maps contain the same set of invalidations. bool operator==(const ObjectIdInvalidationMap& other) const; // Inserts a new invalidation into this map. void Insert(const Invalidation& invalidation); // Returns a new map containing the subset of invaliations from this map // whose IDs were in the specified |ids| set. ObjectIdInvalidationMap GetSubsetWithObjectIds(const ObjectIdSet& ids) const; // Returns the subset of invalidations with IDs matching |id|. const SingleObjectInvalidationSet& ForObject( invalidation::ObjectId id) const; // Returns the contents of this map in a single vector. void GetAllInvalidations(std::vector<syncer::Invalidation>* out) const; // Call Acknowledge() on all contained Invalidations. void AcknowledgeAll() const; // Serialize this map to a value. scoped_ptr<base::ListValue> ToValue() const; // Deserialize the value into a map and use it to re-initialize this object. bool ResetFromValue(const base::ListValue& value); // Prints the contentes of this map as a human-readable string. std::string ToString() const; private: typedef std::map<invalidation::ObjectId, SingleObjectInvalidationSet, ObjectIdLessThan> IdToListMap; ObjectIdInvalidationMap(const IdToListMap& map); IdToListMap map_; }; } // namespace syncer #endif // SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_