blob: 1b3f0e9f01ee75a8633afa4da0633c335f9a0eb9 [file] [log] [blame]
// 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_