1// Copyright (c) 2012 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 "sync/sessions/status_controller.h"
6
7#include <vector>
8
9#include "base/basictypes.h"
10#include "sync/internal_api/public/base/model_type.h"
11#include "sync/protocol/sync_protocol_error.h"
12
13namespace syncer {
14namespace sessions {
15
16StatusController::StatusController() {
17}
18
19StatusController::~StatusController() {}
20
21void StatusController::increment_num_updates_downloaded_by(int value) {
22  model_neutral_.num_updates_downloaded_total += value;
23}
24
25void StatusController::set_types_needing_local_migration(ModelTypeSet types) {
26  model_neutral_.types_needing_local_migration = types;
27}
28
29void StatusController::increment_num_tombstone_updates_downloaded_by(
30    int value) {
31  model_neutral_.num_tombstone_updates_downloaded_total += value;
32}
33
34void StatusController::increment_num_reflected_updates_downloaded_by(
35    int value) {
36  model_neutral_.num_reflected_updates_downloaded_total += value;
37}
38
39void StatusController::set_num_server_changes_remaining(
40    int64 changes_remaining) {
41  model_neutral_.num_server_changes_remaining = changes_remaining;
42}
43
44void StatusController::UpdateStartTime() {
45  sync_start_time_ = base::Time::Now();
46}
47
48void StatusController::set_num_successful_bookmark_commits(int value) {
49  model_neutral_.num_successful_bookmark_commits = value;
50}
51
52void StatusController::increment_num_successful_bookmark_commits() {
53  model_neutral_.num_successful_bookmark_commits++;
54}
55
56void StatusController::increment_num_successful_commits() {
57  model_neutral_.num_successful_commits++;
58}
59
60void StatusController::increment_num_updates_applied_by(int value) {
61  model_neutral_.num_updates_applied += value;
62}
63
64void StatusController::increment_num_encryption_conflicts_by(int value) {
65  model_neutral_.num_encryption_conflicts += value;
66}
67
68void StatusController::increment_num_hierarchy_conflicts_by(int value) {
69  model_neutral_.num_hierarchy_conflicts += value;
70}
71
72void StatusController::increment_num_server_conflicts() {
73  model_neutral_.num_server_conflicts++;
74}
75
76void StatusController::increment_num_local_overwrites() {
77  model_neutral_.num_local_overwrites++;
78}
79
80void StatusController::increment_num_server_overwrites() {
81  model_neutral_.num_server_overwrites++;
82}
83
84void StatusController::set_sync_protocol_error(
85    const SyncProtocolError& error) {
86  model_neutral_.sync_protocol_error = error;
87}
88
89void StatusController::set_last_get_key_result(const SyncerError result) {
90  model_neutral_.last_get_key_result = result;
91}
92
93void StatusController::set_last_download_updates_result(
94    const SyncerError result) {
95  model_neutral_.last_download_updates_result = result;
96}
97
98void StatusController::set_commit_result(const SyncerError result) {
99  model_neutral_.commit_result = result;
100}
101
102SyncerError StatusController::last_get_key_result() const {
103  return model_neutral_.last_get_key_result;
104}
105
106int StatusController::num_updates_applied() const {
107  return model_neutral_.num_updates_applied;
108}
109
110int StatusController::num_server_overwrites() const {
111  return model_neutral_.num_server_overwrites;
112}
113
114int StatusController::num_encryption_conflicts() const {
115  return model_neutral_.num_encryption_conflicts;
116}
117
118int StatusController::num_hierarchy_conflicts() const {
119  return model_neutral_.num_hierarchy_conflicts;
120}
121
122int StatusController::num_server_conflicts() const {
123  return model_neutral_.num_server_conflicts;
124}
125
126int StatusController::TotalNumConflictingItems() const {
127  int sum = 0;
128  sum += num_encryption_conflicts();
129  sum += num_hierarchy_conflicts();
130  sum += num_server_conflicts();
131  return sum;
132}
133
134}  // namespace sessions
135}  // namespace syncer
136