| Index: sync/notifier/ordered_invalidation_list.h
|
| diff --git a/sync/notifier/ordered_invalidation_list.h b/sync/notifier/ordered_invalidation_list.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5985f0aac3270295c0dcfd5dd49bee4fa6e9ad9a
|
| --- /dev/null
|
| +++ b/sync/notifier/ordered_invalidation_list.h
|
| @@ -0,0 +1,66 @@
|
| +// 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_INTERNAL_API_PUBLIC_BASE_INVALIDATION_LIST_H_
|
| +#define SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_LIST_H_
|
| +
|
| +#include <set>
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "sync/base/sync_export.h"
|
| +#include "sync/internal_api/public/base/invalidation.h"
|
| +
|
| +namespace base {
|
| +class ListValue;
|
| +} // namespace base
|
| +
|
| +namespace syncer {
|
| +
|
| +struct InvalidationVersionLessThan {
|
| + bool operator()(const Invalidation& a, const Invalidation& b);
|
| +};
|
| +
|
| +// Holds a list of invalidations that all share the same Object ID.
|
| +//
|
| +// The list is kept sorted by version to make it easier to perform common
|
| +// operations, like checking for an unknown version invalidation or fetching the
|
| +// highest invalidation with the highest version number.
|
| +class SYNC_EXPORT OrderedInvalidationList {
|
| + public:
|
| + typedef std::set<Invalidation, InvalidationVersionLessThan> InvalidationsSet;
|
| + typedef InvalidationsSet::const_iterator const_iterator;
|
| + typedef InvalidationsSet::const_reverse_iterator const_reverse_iterator;
|
| +
|
| + OrderedInvalidationList();
|
| + ~OrderedInvalidationList();
|
| +
|
| + void Insert(const Invalidation& invalidation);
|
| + void InsertAll(const OrderedInvalidationList& other);
|
| + void Clear();
|
| +
|
| + // Returns true if this list contains an unknown version.
|
| + //
|
| + // Unknown version invalidations always end up at the start of the list,
|
| + // because they have the lowest possible value in the sort ordering.
|
| + bool StartsWithUnknownVersion() const;
|
| + size_t GetSize() const;
|
| + bool IsEmpty() const;
|
| + bool operator==(const OrderedInvalidationList& other) const;
|
| +
|
| + const_iterator begin() const;
|
| + const_iterator end() const;
|
| + const_reverse_iterator rbegin() const;
|
| + const_reverse_iterator rend() const;
|
| + const Invalidation& back() const;
|
| +
|
| + scoped_ptr<base::ListValue> ToValue() const;
|
| + bool ResetFromValue(const base::ListValue& list);
|
| +
|
| + private:
|
| + InvalidationsSet invalidations_;
|
| +};
|
| +
|
| +} // syncer
|
| +
|
| +#endif // SYNC_INTERNAL_API_PUBLIC_BASE_INVALIDATION_LIST_H_
|
|
|