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#include "chrome/browser/sync_file_system/drive_backend/tracker_set.h" 6 7#include "base/logging.h" 8#include "base/stl_util.h" 9#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 10 11namespace sync_file_system { 12namespace drive_backend { 13 14bool TrackerSet::TrackerComparator::operator()(const FileTracker* left, 15 const FileTracker* right) const { 16 return left->tracker_id() < right->tracker_id(); 17} 18 19TrackerSet::TrackerSet() 20 : active_tracker_(NULL) { 21} 22 23TrackerSet::~TrackerSet() {} 24 25void TrackerSet::Insert(FileTracker* tracker) { 26 if (tracker_set_.insert(tracker).second && tracker->active()) { 27 DCHECK(!active_tracker_); 28 active_tracker_ = tracker; 29 } 30} 31 32void TrackerSet::Erase(FileTracker* tracker) { 33 if (tracker_set_.erase(tracker) == 1 && active_tracker_ == tracker) 34 active_tracker_ = NULL; 35} 36 37void TrackerSet::Activate(FileTracker* tracker) { 38 DCHECK(!active_tracker_); 39 DCHECK(ContainsKey(tracker_set_, tracker)); 40 active_tracker_ = tracker; 41} 42 43void TrackerSet::Inactivate(FileTracker* tracker) { 44 DCHECK(tracker->active()); 45 DCHECK_EQ(tracker, active_tracker_); 46 DCHECK(ContainsKey(tracker_set_, tracker)); 47 active_tracker_ = NULL; 48} 49 50} // namespace drive_backend 51} // namespace sync_file_system 52