Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: sync/engine/all_status.cc

Issue 152013003: Split up SyncEngineEventListener callbacks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One more forward declaration Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/engine/all_status.h ('k') | sync/engine/sync_cycle_event.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sync/engine/all_status.h" 5 #include "sync/engine/all_status.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/port.h" 10 #include "base/port.h"
11 #include "sync/engine/net/server_connection_manager.h" 11 #include "sync/engine/net/server_connection_manager.h"
12 #include "sync/engine/sync_cycle_event.h"
12 #include "sync/internal_api/public/base/model_type.h" 13 #include "sync/internal_api/public/base/model_type.h"
13 14
14 namespace syncer { 15 namespace syncer {
15 16
16 AllStatus::AllStatus() { 17 AllStatus::AllStatus() {
17 status_.notifications_enabled = false; 18 status_.notifications_enabled = false;
18 status_.cryptographer_ready = false; 19 status_.cryptographer_ready = false;
19 status_.crypto_has_pending_keys = false; 20 status_.crypto_has_pending_keys = false;
20 } 21 }
21 22
22 AllStatus::~AllStatus() { 23 AllStatus::~AllStatus() {
23 } 24 }
24 25
25 SyncStatus AllStatus::CreateBlankStatus() const { 26 SyncStatus AllStatus::CreateBlankStatus() const {
26 // Status is initialized with the previous status value. Variables 27 // Status is initialized with the previous status value. Variables
27 // whose values accumulate (e.g. lifetime counters like updates_received) 28 // whose values accumulate (e.g. lifetime counters like updates_received)
28 // are not to be cleared here. 29 // are not to be cleared here.
29 SyncStatus status = status_; 30 SyncStatus status = status_;
30 status.encryption_conflicts = 0; 31 status.encryption_conflicts = 0;
31 status.hierarchy_conflicts = 0; 32 status.hierarchy_conflicts = 0;
32 status.server_conflicts = 0; 33 status.server_conflicts = 0;
33 status.committed_count = 0; 34 status.committed_count = 0;
34 status.updates_available = 0; 35 status.updates_available = 0;
35 return status; 36 return status;
36 } 37 }
37 38
38 SyncStatus AllStatus::CalcSyncing(const SyncEngineEvent &event) const { 39 SyncStatus AllStatus::CalcSyncing(const SyncCycleEvent &event) const {
39 SyncStatus status = CreateBlankStatus(); 40 SyncStatus status = CreateBlankStatus();
40 const sessions::SyncSessionSnapshot& snapshot = event.snapshot; 41 const sessions::SyncSessionSnapshot& snapshot = event.snapshot;
41 status.encryption_conflicts = snapshot.num_encryption_conflicts(); 42 status.encryption_conflicts = snapshot.num_encryption_conflicts();
42 status.hierarchy_conflicts = snapshot.num_hierarchy_conflicts(); 43 status.hierarchy_conflicts = snapshot.num_hierarchy_conflicts();
43 status.server_conflicts = snapshot.num_server_conflicts(); 44 status.server_conflicts = snapshot.num_server_conflicts();
44 status.committed_count = 45 status.committed_count =
45 snapshot.model_neutral_state().num_successful_commits; 46 snapshot.model_neutral_state().num_successful_commits;
46 47
47 if (event.what_happened == SyncEngineEvent::SYNC_CYCLE_BEGIN) { 48 if (event.what_happened == SyncCycleEvent::SYNC_CYCLE_BEGIN) {
48 status.syncing = true; 49 status.syncing = true;
49 } else if (event.what_happened == SyncEngineEvent::SYNC_CYCLE_ENDED) { 50 } else if (event.what_happened == SyncCycleEvent::SYNC_CYCLE_ENDED) {
50 status.syncing = false; 51 status.syncing = false;
51 } 52 }
52 53
53 status.updates_available += snapshot.num_server_changes_remaining(); 54 status.updates_available += snapshot.num_server_changes_remaining();
54 status.sync_protocol_error =
55 snapshot.model_neutral_state().sync_protocol_error;
56 55
57 status.num_entries_by_type = snapshot.num_entries_by_type(); 56 status.num_entries_by_type = snapshot.num_entries_by_type();
58 status.num_to_delete_entries_by_type = 57 status.num_to_delete_entries_by_type =
59 snapshot.num_to_delete_entries_by_type(); 58 snapshot.num_to_delete_entries_by_type();
60 59
61 // Accumulate update count only once per session to avoid double-counting. 60 // Accumulate update count only once per session to avoid double-counting.
62 if (event.what_happened == SyncEngineEvent::SYNC_CYCLE_ENDED) { 61 if (event.what_happened == SyncCycleEvent::SYNC_CYCLE_ENDED) {
63 status.updates_received += 62 status.updates_received +=
64 snapshot.model_neutral_state().num_updates_downloaded_total; 63 snapshot.model_neutral_state().num_updates_downloaded_total;
65 status.tombstone_updates_received += 64 status.tombstone_updates_received +=
66 snapshot.model_neutral_state().num_tombstone_updates_downloaded_total; 65 snapshot.model_neutral_state().num_tombstone_updates_downloaded_total;
67 status.reflected_updates_received += 66 status.reflected_updates_received +=
68 snapshot.model_neutral_state().num_reflected_updates_downloaded_total; 67 snapshot.model_neutral_state().num_reflected_updates_downloaded_total;
69 status.num_commits_total += 68 status.num_commits_total +=
70 snapshot.model_neutral_state().num_successful_commits; 69 snapshot.model_neutral_state().num_successful_commits;
71 status.num_local_overwrites_total += 70 status.num_local_overwrites_total +=
72 snapshot.model_neutral_state().num_local_overwrites; 71 snapshot.model_neutral_state().num_local_overwrites;
(...skipping 12 matching lines...) Expand all
85 if (snapshot.model_neutral_state().num_successful_commits == 0 && 84 if (snapshot.model_neutral_state().num_successful_commits == 0 &&
86 snapshot.model_neutral_state().num_updates_downloaded_total == 0) { 85 snapshot.model_neutral_state().num_updates_downloaded_total == 0) {
87 ++status.useless_sync_cycles; 86 ++status.useless_sync_cycles;
88 } else { 87 } else {
89 ++status.useful_sync_cycles; 88 ++status.useful_sync_cycles;
90 } 89 }
91 } 90 }
92 return status; 91 return status;
93 } 92 }
94 93
95 void AllStatus::OnSyncEngineEvent(const SyncEngineEvent& event) { 94 void AllStatus::OnSyncCycleEvent(const SyncCycleEvent& event) {
96 ScopedStatusLock lock(this); 95 ScopedStatusLock lock(this);
97 switch (event.what_happened) { 96 switch (event.what_happened) {
98 case SyncEngineEvent::SYNC_CYCLE_BEGIN: 97 case SyncCycleEvent::SYNC_CYCLE_BEGIN:
99 case SyncEngineEvent::STATUS_CHANGED: 98 case SyncCycleEvent::STATUS_CHANGED:
100 case SyncEngineEvent::SYNC_CYCLE_ENDED: 99 case SyncCycleEvent::SYNC_CYCLE_ENDED:
101 status_ = CalcSyncing(event); 100 status_ = CalcSyncing(event);
102 break; 101 break;
103 case SyncEngineEvent::STOP_SYNCING_PERMANENTLY:
104 break;
105 case SyncEngineEvent::ACTIONABLE_ERROR:
106 status_ = CreateBlankStatus();
107 status_.sync_protocol_error =
108 event.snapshot.model_neutral_state().sync_protocol_error;
109 break;
110 case SyncEngineEvent::RETRY_TIME_CHANGED:
111 status_.retry_time = event.retry_time;
112 break;
113 case SyncEngineEvent::THROTTLED_TYPES_CHANGED:
114 status_.throttled_types = event.throttled_types;
115 break;
116 default: 102 default:
117 LOG(ERROR) << "Unrecognized Syncer Event: " << event.what_happened; 103 LOG(ERROR) << "Unrecognized Syncer Event: " << event.what_happened;
118 break; 104 break;
119 } 105 }
120 } 106 }
121 107
108 void AllStatus::OnActionableError(
109 const SyncProtocolError& sync_protocol_error) {
110 ScopedStatusLock lock(this);
111 status_ = CreateBlankStatus();
112 status_.sync_protocol_error = sync_protocol_error;
113 }
114
115 void AllStatus::OnRetryTimeChanged(base::Time retry_time) {
116 ScopedStatusLock lock(this);
117 status_.retry_time = retry_time;
118 }
119
120 void AllStatus::OnThrottledTypesChanged(ModelTypeSet throttled_types) {
121 ScopedStatusLock lock(this);
122 status_.throttled_types = throttled_types;
123 }
124
122 SyncStatus AllStatus::status() const { 125 SyncStatus AllStatus::status() const {
123 base::AutoLock lock(mutex_); 126 base::AutoLock lock(mutex_);
124 return status_; 127 return status_;
125 } 128 }
126 129
127 void AllStatus::SetNotificationsEnabled(bool notifications_enabled) { 130 void AllStatus::SetNotificationsEnabled(bool notifications_enabled) {
128 ScopedStatusLock lock(this); 131 ScopedStatusLock lock(this);
129 status_.notifications_enabled = notifications_enabled; 132 status_.notifications_enabled = notifications_enabled;
130 } 133 }
131 134
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 ScopedStatusLock::ScopedStatusLock(AllStatus* allstatus) 201 ScopedStatusLock::ScopedStatusLock(AllStatus* allstatus)
199 : allstatus_(allstatus) { 202 : allstatus_(allstatus) {
200 allstatus->mutex_.Acquire(); 203 allstatus->mutex_.Acquire();
201 } 204 }
202 205
203 ScopedStatusLock::~ScopedStatusLock() { 206 ScopedStatusLock::~ScopedStatusLock() {
204 allstatus_->mutex_.Release(); 207 allstatus_->mutex_.Release();
205 } 208 }
206 209
207 } // namespace syncer 210 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/all_status.h ('k') | sync/engine/sync_cycle_event.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698