Home | History | Annotate | Download | only in notifier
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_
      6 #define SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_
      7 
      8 #include <map>
      9 #include <vector>
     10 
     11 #include "sync/base/sync_export.h"
     12 #include "sync/internal_api/public/base/invalidation.h"
     13 #include "sync/notifier/invalidation_util.h"
     14 #include "sync/notifier/single_object_invalidation_set.h"
     15 
     16 namespace syncer {
     17 
     18 // A set of notifications with some helper methods to organize them by object ID
     19 // and version number.
     20 class SYNC_EXPORT ObjectIdInvalidationMap {
     21   public:
     22    // Creates an invalidation map that includes an 'unknown version'
     23    // invalidation for each specified ID in |ids|.
     24    static ObjectIdInvalidationMap InvalidateAll(const ObjectIdSet& ids);
     25 
     26    ObjectIdInvalidationMap();
     27    ~ObjectIdInvalidationMap();
     28 
     29    // Returns set of ObjectIds for which at least one invalidation is present.
     30    ObjectIdSet GetObjectIds() const;
     31 
     32    // Returns true if this map contains no invalidations.
     33    bool Empty() const;
     34 
     35    // Returns true if both maps contain the same set of invalidations.
     36    bool operator==(const ObjectIdInvalidationMap& other) const;
     37 
     38    // Inserts a new invalidation into this map.
     39    void Insert(const Invalidation& invalidation);
     40 
     41    // Returns a new map containing the subset of invaliations from this map
     42    // whose IDs were in the specified |ids| set.
     43    ObjectIdInvalidationMap GetSubsetWithObjectIds(const ObjectIdSet& ids) const;
     44 
     45    // Returns the subset of invalidations with IDs matching |id|.
     46    const SingleObjectInvalidationSet& ForObject(
     47        invalidation::ObjectId id) const;
     48 
     49    // Returns the contents of this map in a single vector.
     50    void GetAllInvalidations(std::vector<syncer::Invalidation>* out) const;
     51 
     52    // Call Acknowledge() on all contained Invalidations.
     53    void AcknowledgeAll() const;
     54 
     55    // Serialize this map to a value.
     56    scoped_ptr<base::ListValue> ToValue() const;
     57 
     58    // Deserialize the value into a map and use it to re-initialize this object.
     59    bool ResetFromValue(const base::ListValue& value);
     60 
     61    // Prints the contentes of this map as a human-readable string.
     62    std::string ToString() const;
     63 
     64   private:
     65    typedef std::map<invalidation::ObjectId,
     66                     SingleObjectInvalidationSet,
     67                     ObjectIdLessThan> IdToListMap;
     68 
     69    ObjectIdInvalidationMap(const IdToListMap& map);
     70 
     71    IdToListMap map_;
     72 };
     73 
     74 }  // namespace syncer
     75 
     76 #endif  // SYNC_NOTIFIER_OBJECT_ID_INVALIDATION_MAP_H_
     77