| // 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 CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_ |
| #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_ |
| |
| #include <set> |
| |
| namespace sync_file_system { |
| namespace drive_backend { |
| |
| class FileTracker; |
| |
| class TrackerSet { |
| public: |
| struct TrackerComparator { |
| bool operator()(const FileTracker* left, |
| const FileTracker* right) const; |
| }; |
| |
| typedef std::set<FileTracker*, TrackerComparator> RawTrackerSet; |
| typedef RawTrackerSet::iterator iterator; |
| typedef RawTrackerSet::const_iterator const_iterator; |
| |
| TrackerSet(); |
| ~TrackerSet(); |
| |
| bool has_active() const { return !!active_tracker_; } |
| void Insert(FileTracker* tracker); |
| void Erase(FileTracker* tracker); |
| void Activate(FileTracker* tracker); |
| void Inactivate(FileTracker* tracker); |
| |
| const FileTracker* active_tracker() const { return active_tracker_; } |
| const RawTrackerSet& tracker_set() const { return tracker_set_; } |
| |
| iterator begin() { return tracker_set_.begin(); } |
| iterator end() { return tracker_set_.end(); } |
| const_iterator begin() const { return tracker_set_.begin(); } |
| const_iterator end() const { return tracker_set_.end(); } |
| bool empty() const { return tracker_set_.empty(); } |
| |
| private: |
| FileTracker* active_tracker_; |
| RawTrackerSet tracker_set_; |
| }; |
| |
| } // namespace drive_backend |
| } // namespace sync_file_system |
| |
| #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_TRACKER_SET_H_ |