tracker_id_set.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2014 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_id_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
14TrackerIDSet::TrackerIDSet() : active_tracker_(0) {}
15
16TrackerIDSet::~TrackerIDSet() {}
17
18void TrackerIDSet::Insert(const FileTracker& tracker) {
19  if (tracker.active())
20    InsertActiveTracker(tracker.tracker_id());
21  else
22    InsertInactiveTracker(tracker.tracker_id());
23}
24
25void TrackerIDSet::InsertActiveTracker(int64 tracker_id) {
26  DCHECK(tracker_id);
27  DCHECK(!active_tracker_);
28
29  active_tracker_ = tracker_id;
30  tracker_ids_.insert(tracker_id);
31}
32
33void TrackerIDSet::InsertInactiveTracker(int64 tracker_id) {
34  DCHECK(tracker_id);
35  DCHECK_NE(active_tracker_, tracker_id);
36
37  tracker_ids_.insert(tracker_id);
38}
39
40void TrackerIDSet::Erase(int64 tracker_id) {
41  DCHECK(ContainsKey(tracker_ids_, tracker_id));
42
43  if (active_tracker_ == tracker_id)
44    active_tracker_ = 0;
45  tracker_ids_.erase(tracker_id);
46}
47
48void TrackerIDSet::Activate(int64 tracker_id) {
49  DCHECK(!active_tracker_);
50  DCHECK(ContainsKey(tracker_ids_, tracker_id));
51  active_tracker_ = tracker_id;
52}
53
54void TrackerIDSet::Deactivate(int64 tracker_id) {
55  DCHECK_EQ(active_tracker_, tracker_id);
56  DCHECK(ContainsKey(tracker_ids_, tracker_id));
57  active_tracker_ = 0;
58}
59
60}  // namespace drive_backend
61}  // namespace sync_file_system
62