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

Side by Side Diff: chrome/browser/sync/sessions/session_state.h

Issue 6104003: sync: use progress markers instead of timestamps during GetUpdates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tim's fixes Created 9 years, 11 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 // The 'sessions' namespace comprises all the pieces of state that are 5 // The 'sessions' namespace comprises all the pieces of state that are
6 // combined to form a SyncSession instance. In that way, it can be thought of 6 // combined to form a SyncSession instance. In that way, it can be thought of
7 // as an extension of the SyncSession type itself. Session scoping gives 7 // as an extension of the SyncSession type itself. Session scoping gives
8 // context to things like "conflict progress", "update progress", etc, and the 8 // context to things like "conflict progress", "update progress", etc, and the
9 // separation this file provides allows clients to only include the parts they 9 // separation this file provides allows clients to only include the parts they
10 // need rather than the entire session stack. 10 // need rather than the entire session stack.
(...skipping 16 matching lines...) Expand all
27 class DirectoryManager; 27 class DirectoryManager;
28 } 28 }
29 29
30 namespace browser_sync { 30 namespace browser_sync {
31 namespace sessions { 31 namespace sessions {
32 32
33 class UpdateProgress; 33 class UpdateProgress;
34 34
35 // Data pertaining to the status of an active Syncer object. 35 // Data pertaining to the status of an active Syncer object.
36 struct SyncerStatus { 36 struct SyncerStatus {
37 SyncerStatus() 37 SyncerStatus();
38 : invalid_store(false), syncer_stuck(false),
39 syncing(false), num_successful_commits(0),
40 num_successful_bookmark_commits(0) {}
41 38
42 // True when we get such an INVALID_STORE error from the server. 39 // True when we get such an INVALID_STORE error from the server.
43 bool invalid_store; 40 bool invalid_store;
44 // True iff we're stuck. 41 // True iff we're stuck.
45 bool syncer_stuck; 42 bool syncer_stuck;
46 bool syncing; 43 bool syncing;
47 int num_successful_commits; 44 int num_successful_commits;
48 // This is needed for monitoring extensions activity. 45 // This is needed for monitoring extensions activity.
49 int num_successful_bookmark_commits; 46 int num_successful_bookmark_commits;
47
48 // Download event counters.
49 int num_updates_downloaded_total;
50 int num_tombstone_updates_downloaded_total;
50 }; 51 };
51 52
52 // Counters for various errors that can occur repeatedly during a sync session. 53 // Counters for various errors that can occur repeatedly during a sync session.
53 struct ErrorCounters { 54 struct ErrorCounters {
54 ErrorCounters() : num_conflicting_commits(0), 55 ErrorCounters();
55 consecutive_transient_error_commits(0),
56 consecutive_errors(0) {}
57 int num_conflicting_commits; 56 int num_conflicting_commits;
58 57
59 // Number of commits hitting transient errors since the last successful 58 // Number of commits hitting transient errors since the last successful
60 // commit. 59 // commit.
61 int consecutive_transient_error_commits; 60 int consecutive_transient_error_commits;
62 61
63 // Incremented when get_updates fails, commit fails, and when hitting 62 // Incremented when get_updates fails, commit fails, and when hitting
64 // transient errors. When any of these succeed, this counter is reset. 63 // transient errors. When any of these succeed, this counter is reset.
65 // TODO(chron): Reduce number of weird counters we use. 64 // TODO(chron): Reduce number of weird counters we use.
66 int consecutive_errors; 65 int consecutive_errors;
67 }; 66 };
68 67
69 // An immutable snapshot of state from a SyncSession. Convenient to use as 68 // An immutable snapshot of state from a SyncSession. Convenient to use as
70 // part of notifications as it is inherently thread-safe. 69 // part of notifications as it is inherently thread-safe.
71 struct SyncSessionSnapshot { 70 struct SyncSessionSnapshot {
72 SyncSessionSnapshot(const SyncerStatus& syncer_status, 71 SyncSessionSnapshot(
72 const SyncerStatus& syncer_status,
73 const ErrorCounters& errors, 73 const ErrorCounters& errors,
74 int64 num_server_changes_remaining, 74 int64 num_server_changes_remaining,
75 int64 max_local_timestamp,
76 bool is_share_usable, 75 bool is_share_usable,
77 const syncable::ModelTypeBitSet& initial_sync_ended, 76 const syncable::ModelTypeBitSet& initial_sync_ended,
77 std::string download_progress_markers[syncable::MODEL_TYPE_COUNT],
78 bool more_to_sync, 78 bool more_to_sync,
79 bool is_silenced, 79 bool is_silenced,
80 int64 unsynced_count, 80 int64 unsynced_count,
81 int num_conflicting_updates, 81 int num_conflicting_updates,
82 bool did_commit_items); 82 bool did_commit_items);
83 ~SyncSessionSnapshot(); 83 ~SyncSessionSnapshot();
84 84
85 const SyncerStatus syncer_status; 85 const SyncerStatus syncer_status;
86 const ErrorCounters errors; 86 const ErrorCounters errors;
87 const int64 num_server_changes_remaining; 87 const int64 num_server_changes_remaining;
88 const int64 max_local_timestamp;
89 const bool is_share_usable; 88 const bool is_share_usable;
90 const syncable::ModelTypeBitSet initial_sync_ended; 89 const syncable::ModelTypeBitSet initial_sync_ended;
90 const std::string download_progress_markers[syncable::MODEL_TYPE_COUNT];
91 const bool has_more_to_sync; 91 const bool has_more_to_sync;
92 const bool is_silenced; 92 const bool is_silenced;
93 const int64 unsynced_count; 93 const int64 unsynced_count;
94 const int num_conflicting_updates; 94 const int num_conflicting_updates;
95 const bool did_commit_items; 95 const bool did_commit_items;
96 }; 96 };
97 97
98 // Tracks progress of conflicts and their resolution using conflict sets. 98 // Tracks progress of conflicts and their resolution using conflict sets.
99 class ConflictProgress { 99 class ConflictProgress {
100 public: 100 public:
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 // a singleton with respect to model types. 226 // a singleton with respect to model types.
227 struct AllModelTypeState { 227 struct AllModelTypeState {
228 explicit AllModelTypeState(bool* dirty_flag); 228 explicit AllModelTypeState(bool* dirty_flag);
229 ~AllModelTypeState(); 229 ~AllModelTypeState();
230 230
231 // Commits for all model types are bundled together into a single message. 231 // Commits for all model types are bundled together into a single message.
232 ClientToServerMessage commit_message; 232 ClientToServerMessage commit_message;
233 ClientToServerResponse commit_response; 233 ClientToServerResponse commit_response;
234 // We GetUpdates for some combination of types at once. 234 // We GetUpdates for some combination of types at once.
235 // requested_update_types stores the set of types which were requested. 235 // requested_update_types stores the set of types which were requested.
236 syncable::MultiTypeTimeStamp updates_request_parameters; 236 syncable::ModelTypeBitSet updates_request_types;
237 ClientToServerResponse updates_response; 237 ClientToServerResponse updates_response;
238 // Used to build the shared commit message. 238 // Used to build the shared commit message.
239 DirtyOnWrite<std::vector<int64> > unsynced_handles; 239 DirtyOnWrite<std::vector<int64> > unsynced_handles;
240 DirtyOnWrite<SyncerStatus> syncer_status; 240 DirtyOnWrite<SyncerStatus> syncer_status;
241 DirtyOnWrite<ErrorCounters> error_counters; 241 DirtyOnWrite<ErrorCounters> error_counters;
242 SyncCycleControlParameters control_params; 242 SyncCycleControlParameters control_params;
243 DirtyOnWrite<int64> num_server_changes_remaining; 243 DirtyOnWrite<int64> num_server_changes_remaining;
244 OrderedCommitSet commit_set; 244 OrderedCommitSet commit_set;
245 }; 245 };
246 246
247 // Grouping of all state that applies to a single ModelSafeGroup. 247 // Grouping of all state that applies to a single ModelSafeGroup.
248 struct PerModelSafeGroupState { 248 struct PerModelSafeGroupState {
249 explicit PerModelSafeGroupState(bool* dirty_flag); 249 explicit PerModelSafeGroupState(bool* dirty_flag);
250 ~PerModelSafeGroupState(); 250 ~PerModelSafeGroupState();
251 251
252 UpdateProgress update_progress; 252 UpdateProgress update_progress;
253 ConflictProgress conflict_progress; 253 ConflictProgress conflict_progress;
254 }; 254 };
255 255
256 // Grouping of all state that applies to a single ModelType.
257 struct PerModelTypeState {
258 explicit PerModelTypeState(bool* dirty_flag);
259 ~PerModelTypeState();
260
261 DirtyOnWrite<int64> current_download_timestamp;
262 };
263
264 } // namespace sessions 256 } // namespace sessions
265 } // namespace browser_sync 257 } // namespace browser_sync
266 258
267 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSION_STATE_H_ 259 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSION_STATE_H_
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service_harness.cc ('k') | chrome/browser/sync/sessions/session_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698