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

Side by Side Diff: components/sync/engine_impl/get_updates_processor.cc

Issue 2850213002: [Sync] Minor refactor around SyncCycle and ModelTypeSet usage. (Closed)
Patch Set: Fix comment grammar. Created 3 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 "components/sync/engine_impl/get_updates_processor.h" 5 #include "components/sync/engine_impl/get_updates_processor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 83 }
84 84
85 it->second.push_back(&update); 85 it->second.push_back(&update);
86 } 86 }
87 } 87 }
88 88
89 // Builds a map of ModelTypes to indices to progress markers in the given 89 // Builds a map of ModelTypes to indices to progress markers in the given
90 // |gu_response| message. The map is returned in the |index_map| parameter. 90 // |gu_response| message. The map is returned in the |index_map| parameter.
91 void PartitionProgressMarkersByType( 91 void PartitionProgressMarkersByType(
92 const sync_pb::GetUpdatesResponse& gu_response, 92 const sync_pb::GetUpdatesResponse& gu_response,
93 ModelTypeSet request_types, 93 const ModelTypeSet& request_types,
94 TypeToIndexMap* index_map) { 94 TypeToIndexMap* index_map) {
95 for (int i = 0; i < gu_response.new_progress_marker_size(); ++i) { 95 for (int i = 0; i < gu_response.new_progress_marker_size(); ++i) {
96 int field_number = gu_response.new_progress_marker(i).data_type_id(); 96 int field_number = gu_response.new_progress_marker(i).data_type_id();
97 ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number); 97 ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number);
98 if (!IsRealDataType(model_type)) { 98 if (!IsRealDataType(model_type)) {
99 DLOG(WARNING) << "Unknown field number " << field_number; 99 DLOG(WARNING) << "Unknown field number " << field_number;
100 continue; 100 continue;
101 } 101 }
102 if (!request_types.Has(model_type)) { 102 if (!request_types.Has(model_type)) {
103 DLOG(WARNING) 103 DLOG(WARNING)
104 << "Skipping unexpected progress marker for non-enabled type " 104 << "Skipping unexpected progress marker for non-enabled type "
105 << ModelTypeToString(model_type); 105 << ModelTypeToString(model_type);
106 continue; 106 continue;
107 } 107 }
108 index_map->insert(std::make_pair(model_type, i)); 108 index_map->insert(std::make_pair(model_type, i));
109 } 109 }
110 } 110 }
111 111
112 void PartitionContextMutationsByType( 112 void PartitionContextMutationsByType(
113 const sync_pb::GetUpdatesResponse& gu_response, 113 const sync_pb::GetUpdatesResponse& gu_response,
114 ModelTypeSet request_types, 114 const ModelTypeSet& request_types,
115 TypeToIndexMap* index_map) { 115 TypeToIndexMap* index_map) {
116 for (int i = 0; i < gu_response.context_mutations_size(); ++i) { 116 for (int i = 0; i < gu_response.context_mutations_size(); ++i) {
117 int field_number = gu_response.context_mutations(i).data_type_id(); 117 int field_number = gu_response.context_mutations(i).data_type_id();
118 ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number); 118 ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number);
119 if (!IsRealDataType(model_type)) { 119 if (!IsRealDataType(model_type)) {
120 DLOG(WARNING) << "Unknown field number " << field_number; 120 DLOG(WARNING) << "Unknown field number " << field_number;
121 continue; 121 continue;
122 } 122 }
123 if (!request_types.Has(model_type)) { 123 if (!request_types.Has(model_type)) {
124 DLOG(WARNING) 124 DLOG(WARNING)
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 sync_pb::ClientToServerMessage message; 174 sync_pb::ClientToServerMessage message;
175 InitDownloadUpdatesContext(cycle, create_mobile_bookmarks_folder, &message); 175 InitDownloadUpdatesContext(cycle, create_mobile_bookmarks_folder, &message);
176 PrepareGetUpdates(*request_types, &message); 176 PrepareGetUpdates(*request_types, &message);
177 177
178 SyncerError result = ExecuteDownloadUpdates(request_types, cycle, &message); 178 SyncerError result = ExecuteDownloadUpdates(request_types, cycle, &message);
179 cycle->mutable_status_controller()->set_last_download_updates_result(result); 179 cycle->mutable_status_controller()->set_last_download_updates_result(result);
180 return result; 180 return result;
181 } 181 }
182 182
183 void GetUpdatesProcessor::PrepareGetUpdates( 183 void GetUpdatesProcessor::PrepareGetUpdates(
184 ModelTypeSet gu_types, 184 const ModelTypeSet& gu_types,
185 sync_pb::ClientToServerMessage* message) { 185 sync_pb::ClientToServerMessage* message) {
186 sync_pb::GetUpdatesMessage* get_updates = message->mutable_get_updates(); 186 sync_pb::GetUpdatesMessage* get_updates = message->mutable_get_updates();
187 187
188 for (ModelTypeSet::Iterator it = gu_types.First(); it.Good(); it.Inc()) { 188 for (ModelTypeSet::Iterator it = gu_types.First(); it.Good(); it.Inc()) {
189 UpdateHandlerMap::iterator handler_it = update_handler_map_->find(it.Get()); 189 UpdateHandlerMap::iterator handler_it = update_handler_map_->find(it.Get());
190 DCHECK(handler_it != update_handler_map_->end()) 190 DCHECK(handler_it != update_handler_map_->end())
191 << "Failed to look up handler for " << ModelTypeToString(it.Get()); 191 << "Failed to look up handler for " << ModelTypeToString(it.Get());
192 sync_pb::DataTypeProgressMarker* progress_marker = 192 sync_pb::DataTypeProgressMarker* progress_marker =
193 get_updates->add_from_progress_marker(); 193 get_updates->add_from_progress_marker();
194 handler_it->second->GetDownloadProgress(progress_marker); 194 handler_it->second->GetDownloadProgress(progress_marker);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 process_result); 270 process_result);
271 cycle->SendProtocolEvent(response_event); 271 cycle->SendProtocolEvent(response_event);
272 272
273 DVLOG(1) << "GetUpdates result: " << process_result; 273 DVLOG(1) << "GetUpdates result: " << process_result;
274 274
275 return process_result; 275 return process_result;
276 } 276 }
277 277
278 SyncerError GetUpdatesProcessor::ProcessResponse( 278 SyncerError GetUpdatesProcessor::ProcessResponse(
279 const sync_pb::GetUpdatesResponse& gu_response, 279 const sync_pb::GetUpdatesResponse& gu_response,
280 ModelTypeSet request_types, 280 const ModelTypeSet& request_types,
281 StatusController* status) { 281 StatusController* status) {
282 status->increment_num_updates_downloaded_by(gu_response.entries_size()); 282 status->increment_num_updates_downloaded_by(gu_response.entries_size());
283 283
284 // The changes remaining field is used to prevent the client from looping. If 284 // The changes remaining field is used to prevent the client from looping. If
285 // that field is being set incorrectly, we're in big trouble. 285 // that field is being set incorrectly, we're in big trouble.
286 if (!gu_response.has_changes_remaining()) { 286 if (!gu_response.has_changes_remaining()) {
287 return SERVER_RESPONSE_VALIDATION_FAILED; 287 return SERVER_RESPONSE_VALIDATION_FAILED;
288 } 288 }
289 289
290 SyncerError result = 290 SyncerError result =
291 ProcessGetUpdatesResponse(request_types, gu_response, status); 291 ProcessGetUpdatesResponse(request_types, gu_response, status);
292 if (result != SYNCER_OK) 292 if (result != SYNCER_OK)
293 return result; 293 return result;
294 294
295 if (gu_response.changes_remaining() == 0) { 295 if (gu_response.changes_remaining() == 0) {
296 return SYNCER_OK; 296 return SYNCER_OK;
297 } else { 297 } else {
298 return SERVER_MORE_TO_DOWNLOAD; 298 return SERVER_MORE_TO_DOWNLOAD;
299 } 299 }
300 } 300 }
301 301
302 SyncerError GetUpdatesProcessor::ProcessGetUpdatesResponse( 302 SyncerError GetUpdatesProcessor::ProcessGetUpdatesResponse(
303 ModelTypeSet gu_types, 303 const ModelTypeSet& gu_types,
304 const sync_pb::GetUpdatesResponse& gu_response, 304 const sync_pb::GetUpdatesResponse& gu_response,
305 StatusController* status_controller) { 305 StatusController* status_controller) {
306 TypeSyncEntityMap updates_by_type; 306 TypeSyncEntityMap updates_by_type;
307 PartitionUpdatesByType(gu_response, gu_types, &updates_by_type); 307 PartitionUpdatesByType(gu_response, gu_types, &updates_by_type);
308 DCHECK_EQ(gu_types.Size(), updates_by_type.size()); 308 DCHECK_EQ(gu_types.Size(), updates_by_type.size());
309 309
310 TypeToIndexMap progress_index_by_type; 310 TypeToIndexMap progress_index_by_type;
311 PartitionProgressMarkersByType(gu_response, gu_types, 311 PartitionProgressMarkersByType(gu_response, gu_types,
312 &progress_index_by_type); 312 &progress_index_by_type);
313 if (gu_types.Size() != progress_index_by_type.size()) { 313 if (gu_types.Size() != progress_index_by_type.size()) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 << "Type is: " << ModelTypeToString(type); 348 << "Type is: " << ModelTypeToString(type);
349 continue; 349 continue;
350 } 350 }
351 } 351 }
352 DCHECK(progress_marker_iter == progress_index_by_type.end() && 352 DCHECK(progress_marker_iter == progress_index_by_type.end() &&
353 updates_iter == updates_by_type.end()); 353 updates_iter == updates_by_type.end());
354 354
355 return SYNCER_OK; 355 return SYNCER_OK;
356 } 356 }
357 357
358 void GetUpdatesProcessor::ApplyUpdates(ModelTypeSet gu_types, 358 void GetUpdatesProcessor::ApplyUpdates(const ModelTypeSet& gu_types,
359 StatusController* status_controller) { 359 StatusController* status_controller) {
360 status_controller->set_get_updates_request_types(gu_types); 360 status_controller->set_get_updates_request_types(gu_types);
361 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_); 361 delegate_.ApplyUpdates(gu_types, status_controller, update_handler_map_);
362 } 362 }
363 363
364 void GetUpdatesProcessor::CopyClientDebugInfo( 364 void GetUpdatesProcessor::CopyClientDebugInfo(
365 DebugInfoGetter* debug_info_getter, 365 DebugInfoGetter* debug_info_getter,
366 sync_pb::DebugInfo* debug_info) { 366 sync_pb::DebugInfo* debug_info) {
367 DVLOG(1) << "Copying client debug info to send."; 367 DVLOG(1) << "Copying client debug info to send.";
368 debug_info_getter->GetDebugInfo(debug_info); 368 debug_info_getter->GetDebugInfo(debug_info);
369 } 369 }
370 370
371 } // namespace syncer 371 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/engine_impl/get_updates_processor.h ('k') | components/sync/engine_impl/sync_scheduler_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698