blob: 68353a9389122dee477f005f4138a1c6b329276e [file] [log] [blame]
Ben Murdochbb1529c2013-08-08 10:24:53 +01001// 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 CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_
7
8#include <set>
9
10namespace sync_file_system {
11namespace drive_backend {
12
13class FileTracker;
14
15class TrackerSet {
16 public:
17 struct TrackerComparator {
18 bool operator()(const FileTracker* left,
19 const FileTracker* right) const;
20 };
21
22 typedef std::set<FileTracker*, TrackerComparator> RawTrackerSet;
23 typedef RawTrackerSet::iterator iterator;
24 typedef RawTrackerSet::const_iterator const_iterator;
25
26 TrackerSet();
27 ~TrackerSet();
28
29 bool has_active() const { return !!active_tracker_; }
30 void Insert(FileTracker* tracker);
31 void Erase(FileTracker* tracker);
32 void Activate(FileTracker* tracker);
33 void Inactivate(FileTracker* tracker);
34
35 const FileTracker* active_tracker() const { return active_tracker_; }
36 const RawTrackerSet& tracker_set() const { return tracker_set_; }
37
38 iterator begin() { return tracker_set_.begin(); }
39 iterator end() { return tracker_set_.end(); }
40 const_iterator begin() const { return tracker_set_.begin(); }
41 const_iterator end() const { return tracker_set_.end(); }
42
43 private:
44 FileTracker* active_tracker_;
45 RawTrackerSet tracker_set_;
46};
47
48} // namespace drive_backend
49} // namespace sync_file_system
50
51#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_