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 11 namespace sync_file_system { 12 namespace drive_backend { 13 14 bool TrackerSet::TrackerComparator::operator()(const FileTracker* left, 15 const FileTracker* right) const { 16 return left->tracker_id() < right->tracker_id(); 17 } 18 19 TrackerSet::TrackerSet() 20 : active_tracker_(NULL) { 21 } 22 23 TrackerSet::~TrackerSet() {} 24 25 void TrackerSet::Insert(FileTracker* tracker) { 26 if (tracker_set_.insert(tracker).second && tracker->active()) { 27 DCHECK(!active_tracker_); 28 active_tracker_ = tracker; 29 } 30 } 31 32 void TrackerSet::Erase(FileTracker* tracker) { 33 if (tracker_set_.erase(tracker) == 1 && active_tracker_ == tracker) 34 active_tracker_ = NULL; 35 } 36 37 void TrackerSet::Activate(FileTracker* tracker) { 38 DCHECK(!active_tracker_); 39 DCHECK(ContainsKey(tracker_set_, tracker)); 40 active_tracker_ = tracker; 41 } 42 43 void 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