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

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

Issue 10735041: Remove syncproto.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address most comments Created 8 years, 5 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/syncer_proto_util.h ('k') | sync/engine/syncer_proto_util_unittest.cc » ('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/syncer_proto_util.h" 5 #include "sync/engine/syncer_proto_util.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "sync/engine/net/server_connection_manager.h" 9 #include "sync/engine/net/server_connection_manager.h"
10 #include "sync/engine/syncer.h" 10 #include "sync/engine/syncer.h"
11 #include "sync/engine/syncer_types.h" 11 #include "sync/engine/syncer_types.h"
12 #include "sync/engine/throttled_data_type_tracker.h" 12 #include "sync/engine/throttled_data_type_tracker.h"
13 #include "sync/engine/traffic_logger.h" 13 #include "sync/engine/traffic_logger.h"
14 #include "sync/internal_api/public/base/model_type.h" 14 #include "sync/internal_api/public/base/model_type.h"
15 #include "sync/protocol/sync.pb.h" 15 #include "sync/protocol/sync.pb.h"
16 #include "sync/protocol/sync_enums.pb.h" 16 #include "sync/protocol/sync_enums.pb.h"
17 #include "sync/protocol/sync_protocol_error.h" 17 #include "sync/protocol/sync_protocol_error.h"
18 #include "sync/sessions/sync_session.h" 18 #include "sync/sessions/sync_session.h"
19 #include "sync/syncable/directory.h" 19 #include "sync/syncable/directory.h"
20 #include "sync/syncable/entry.h" 20 #include "sync/syncable/entry.h"
21 #include "sync/syncable/syncable-inl.h" 21 #include "sync/syncable/syncable-inl.h"
22 #include "sync/syncable/syncable_proto_util.h"
22 #include "sync/util/time.h" 23 #include "sync/util/time.h"
23 24
24 using std::string; 25 using std::string;
25 using std::stringstream; 26 using std::stringstream;
27 using sync_pb::ClientToServerMessage;
28 using sync_pb::ClientToServerResponse;
26 29
27 namespace syncer { 30 namespace syncer {
28 31
29 using sessions::SyncSession; 32 using sessions::SyncSession;
30 using syncable::BASE_VERSION; 33 using syncable::BASE_VERSION;
31 using syncable::CTIME; 34 using syncable::CTIME;
32 using syncable::ID; 35 using syncable::ID;
33 using syncable::IS_DEL; 36 using syncable::IS_DEL;
34 using syncable::IS_DIR; 37 using syncable::IS_DIR;
35 using syncable::IS_UNSYNCED; 38 using syncable::IS_UNSYNCED;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 default: 103 default:
101 NOTREACHED(); 104 NOTREACHED();
102 return UNSET; 105 return UNSET;
103 } 106 }
104 } 107 }
105 108
106 } // namespace 109 } // namespace
107 110
108 // static 111 // static
109 void SyncerProtoUtil::HandleMigrationDoneResponse( 112 void SyncerProtoUtil::HandleMigrationDoneResponse(
110 const sync_pb::ClientToServerResponse* response, 113 const ClientToServerResponse* response,
111 sessions::SyncSession* session) { 114 sessions::SyncSession* session) {
112 LOG_IF(ERROR, 0 >= response->migrated_data_type_id_size()) 115 LOG_IF(ERROR, 0 >= response->migrated_data_type_id_size())
113 << "MIGRATION_DONE but no types specified."; 116 << "MIGRATION_DONE but no types specified.";
114 syncer::ModelTypeSet to_migrate; 117 syncer::ModelTypeSet to_migrate;
115 for (int i = 0; i < response->migrated_data_type_id_size(); i++) { 118 for (int i = 0; i < response->migrated_data_type_id_size(); i++) {
116 to_migrate.Put(syncer::GetModelTypeFromSpecificsFieldNumber( 119 to_migrate.Put(syncer::GetModelTypeFromSpecificsFieldNumber(
117 response->migrated_data_type_id(i))); 120 response->migrated_data_type_id(i)));
118 } 121 }
119 // TODO(akalin): This should be a set union. 122 // TODO(akalin): This should be a set union.
120 session->mutable_status_controller()-> 123 session->mutable_status_controller()->
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 156 }
154 157
155 // static 158 // static
156 void SyncerProtoUtil::AddRequestBirthday(syncable::Directory* dir, 159 void SyncerProtoUtil::AddRequestBirthday(syncable::Directory* dir,
157 ClientToServerMessage* msg) { 160 ClientToServerMessage* msg) {
158 if (!dir->store_birthday().empty()) 161 if (!dir->store_birthday().empty())
159 msg->set_store_birthday(dir->store_birthday()); 162 msg->set_store_birthday(dir->store_birthday());
160 } 163 }
161 164
162 // static 165 // static
166 void SyncerProtoUtil::SetProtocolVersion(ClientToServerMessage* msg) {
167 const int current_version =
168 ClientToServerMessage::default_instance().protocol_version();
169 msg->set_protocol_version(current_version);
170 }
171
172 // static
163 bool SyncerProtoUtil::PostAndProcessHeaders(ServerConnectionManager* scm, 173 bool SyncerProtoUtil::PostAndProcessHeaders(ServerConnectionManager* scm,
164 sessions::SyncSession* session, 174 sessions::SyncSession* session,
165 const ClientToServerMessage& msg, 175 const ClientToServerMessage& msg,
166 ClientToServerResponse* response) { 176 ClientToServerResponse* response) {
167 ServerConnectionManager::PostBufferParams params; 177 ServerConnectionManager::PostBufferParams params;
178 DCHECK(msg.has_protocol_version());
179 DCHECK_EQ(msg.protocol_version(),
180 ClientToServerMessage::default_instance().protocol_version());
168 msg.SerializeToString(&params.buffer_in); 181 msg.SerializeToString(&params.buffer_in);
169 182
170 ScopedServerStatusWatcher server_status_watcher(scm, &params.response); 183 ScopedServerStatusWatcher server_status_watcher(scm, &params.response);
171 // Fills in params.buffer_out and params.response. 184 // Fills in params.buffer_out and params.response.
172 if (!scm->PostBufferWithCachedAuth(&params, &server_status_watcher)) { 185 if (!scm->PostBufferWithCachedAuth(&params, &server_status_watcher)) {
173 LOG(WARNING) << "Error posting from syncer:" << params.response; 186 LOG(WARNING) << "Error posting from syncer:" << params.response;
174 return false; 187 return false;
175 } 188 }
176 189
177 std::string new_token = params.response.update_client_auth_header; 190 std::string new_token = params.response.update_client_auth_header;
(...skipping 14 matching lines...) Expand all
192 return false; 205 return false;
193 default: 206 default:
194 return true; 207 return true;
195 } 208 }
196 } 209 }
197 210
198 return false; 211 return false;
199 } 212 }
200 213
201 base::TimeDelta SyncerProtoUtil::GetThrottleDelay( 214 base::TimeDelta SyncerProtoUtil::GetThrottleDelay(
202 const sync_pb::ClientToServerResponse& response) { 215 const ClientToServerResponse& response) {
203 base::TimeDelta throttle_delay = 216 base::TimeDelta throttle_delay =
204 base::TimeDelta::FromSeconds(kSyncDelayAfterThrottled); 217 base::TimeDelta::FromSeconds(kSyncDelayAfterThrottled);
205 if (response.has_client_command()) { 218 if (response.has_client_command()) {
206 const sync_pb::ClientCommand& command = response.client_command(); 219 const sync_pb::ClientCommand& command = response.client_command();
207 if (command.has_throttle_delay_seconds()) { 220 if (command.has_throttle_delay_seconds()) {
208 throttle_delay = 221 throttle_delay =
209 base::TimeDelta::FromSeconds(command.throttle_delay_seconds()); 222 base::TimeDelta::FromSeconds(command.throttle_delay_seconds());
210 } 223 }
211 } 224 }
212 return throttle_delay; 225 return throttle_delay;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 return syncer::DISABLE_SYNC_ON_CLIENT; 295 return syncer::DISABLE_SYNC_ON_CLIENT;
283 case sync_pb::SyncEnums::UNKNOWN_ACTION: 296 case sync_pb::SyncEnums::UNKNOWN_ACTION:
284 return syncer::UNKNOWN_ACTION; 297 return syncer::UNKNOWN_ACTION;
285 default: 298 default:
286 NOTREACHED(); 299 NOTREACHED();
287 return syncer::UNKNOWN_ACTION; 300 return syncer::UNKNOWN_ACTION;
288 } 301 }
289 } 302 }
290 303
291 syncer::SyncProtocolError ConvertErrorPBToLocalType( 304 syncer::SyncProtocolError ConvertErrorPBToLocalType(
292 const sync_pb::ClientToServerResponse::Error& error) { 305 const ClientToServerResponse::Error& error) {
293 syncer::SyncProtocolError sync_protocol_error; 306 syncer::SyncProtocolError sync_protocol_error;
294 sync_protocol_error.error_type = ConvertSyncProtocolErrorTypePBToLocalType( 307 sync_protocol_error.error_type = ConvertSyncProtocolErrorTypePBToLocalType(
295 error.error_type()); 308 error.error_type());
296 sync_protocol_error.error_description = error.error_description(); 309 sync_protocol_error.error_description = error.error_description();
297 sync_protocol_error.url = error.url(); 310 sync_protocol_error.url = error.url();
298 sync_protocol_error.action = ConvertClientActionPBToLocalClientAction( 311 sync_protocol_error.action = ConvertClientActionPBToLocalClientAction(
299 error.action()); 312 error.action());
300 313
301 if (error.error_data_type_ids_size() > 0) { 314 if (error.error_data_type_ids_size() > 0) {
302 // THROTTLED is currently the only error code that uses |error_data_types|. 315 // THROTTLED is currently the only error code that uses |error_data_types|.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 case syncer::NOT_MY_BIRTHDAY: 421 case syncer::NOT_MY_BIRTHDAY:
409 return SERVER_RETURN_NOT_MY_BIRTHDAY; 422 return SERVER_RETURN_NOT_MY_BIRTHDAY;
410 default: 423 default:
411 NOTREACHED(); 424 NOTREACHED();
412 return UNSET; 425 return UNSET;
413 } 426 }
414 } 427 }
415 428
416 // static 429 // static
417 bool SyncerProtoUtil::Compare(const syncable::Entry& local_entry, 430 bool SyncerProtoUtil::Compare(const syncable::Entry& local_entry,
418 const SyncEntity& server_entry) { 431 const sync_pb::SyncEntity& server_entry) {
419 const std::string name = NameFromSyncEntity(server_entry); 432 const std::string name = NameFromSyncEntity(server_entry);
420 433
421 CHECK(local_entry.Get(ID) == server_entry.id()) << 434 CHECK_EQ(local_entry.Get(ID), SyncableIdFromProto(server_entry.id_string()));
422 " SyncerProtoUtil::Compare precondition not met."; 435 CHECK_EQ(server_entry.version(), local_entry.Get(BASE_VERSION));
423 CHECK(server_entry.version() == local_entry.Get(BASE_VERSION)) << 436 CHECK(!local_entry.Get(IS_UNSYNCED));
424 " SyncerProtoUtil::Compare precondition not met.";
425 CHECK(!local_entry.Get(IS_UNSYNCED)) <<
426 " SyncerProtoUtil::Compare precondition not met.";
427 437
428 if (local_entry.Get(IS_DEL) && server_entry.deleted()) 438 if (local_entry.Get(IS_DEL) && server_entry.deleted())
429 return true; 439 return true;
430 if (local_entry.Get(CTIME) != ProtoTimeToTime(server_entry.ctime())) { 440 if (local_entry.Get(CTIME) != ProtoTimeToTime(server_entry.ctime())) {
431 LOG(WARNING) << "ctime mismatch"; 441 LOG(WARNING) << "ctime mismatch";
432 return false; 442 return false;
433 } 443 }
434 444
435 // These checks are somewhat prolix, but they're easier to debug than a big 445 // These checks are somewhat prolix, but they're easier to debug than a big
436 // boolean statement. 446 // boolean statement.
437 string client_name = local_entry.Get(syncable::NON_UNIQUE_NAME); 447 string client_name = local_entry.Get(syncable::NON_UNIQUE_NAME);
438 if (client_name != name) { 448 if (client_name != name) {
439 LOG(WARNING) << "Client name mismatch"; 449 LOG(WARNING) << "Client name mismatch";
440 return false; 450 return false;
441 } 451 }
442 if (local_entry.Get(PARENT_ID) != server_entry.parent_id()) { 452 if (local_entry.Get(PARENT_ID) !=
453 SyncableIdFromProto(server_entry.parent_id_string())) {
443 LOG(WARNING) << "Parent ID mismatch"; 454 LOG(WARNING) << "Parent ID mismatch";
444 return false; 455 return false;
445 } 456 }
446 if (local_entry.Get(IS_DIR) != server_entry.IsFolder()) { 457 if (local_entry.Get(IS_DIR) != IsFolder(server_entry)) {
447 LOG(WARNING) << "Dir field mismatch"; 458 LOG(WARNING) << "Dir field mismatch";
448 return false; 459 return false;
449 } 460 }
450 if (local_entry.Get(IS_DEL) != server_entry.deleted()) { 461 if (local_entry.Get(IS_DEL) != server_entry.deleted()) {
451 LOG(WARNING) << "Deletion mismatch"; 462 LOG(WARNING) << "Deletion mismatch";
452 return false; 463 return false;
453 } 464 }
454 if (!local_entry.Get(IS_DIR) && 465 if (!local_entry.Get(IS_DIR) &&
455 (local_entry.Get(MTIME) != ProtoTimeToTime(server_entry.mtime()))) { 466 (local_entry.Get(MTIME) != ProtoTimeToTime(server_entry.mtime()))) {
456 LOG(WARNING) << "mtime mismatch"; 467 LOG(WARNING) << "mtime mismatch";
(...skipping 28 matching lines...) Expand all
485 // static 496 // static
486 const std::string& SyncerProtoUtil::NameFromSyncEntity( 497 const std::string& SyncerProtoUtil::NameFromSyncEntity(
487 const sync_pb::SyncEntity& entry) { 498 const sync_pb::SyncEntity& entry) {
488 if (entry.has_non_unique_name()) 499 if (entry.has_non_unique_name())
489 return entry.non_unique_name(); 500 return entry.non_unique_name();
490 return entry.name(); 501 return entry.name();
491 } 502 }
492 503
493 // static 504 // static
494 const std::string& SyncerProtoUtil::NameFromCommitEntryResponse( 505 const std::string& SyncerProtoUtil::NameFromCommitEntryResponse(
495 const CommitResponse_EntryResponse& entry) { 506 const sync_pb::CommitResponse_EntryResponse& entry) {
496 if (entry.has_non_unique_name()) 507 if (entry.has_non_unique_name())
497 return entry.non_unique_name(); 508 return entry.non_unique_name();
498 return entry.name(); 509 return entry.name();
499 } 510 }
500 511
501 std::string SyncerProtoUtil::SyncEntityDebugString( 512 std::string SyncerProtoUtil::SyncEntityDebugString(
502 const sync_pb::SyncEntity& entry) { 513 const sync_pb::SyncEntity& entry) {
503 const std::string& mtime_str = 514 const std::string& mtime_str =
504 GetTimeDebugString(ProtoTimeToTime(entry.mtime())); 515 GetTimeDebugString(ProtoTimeToTime(entry.mtime()));
505 const std::string& ctime_str = 516 const std::string& ctime_str =
(...skipping 21 matching lines...) Expand all
527 output.append("GetUpdatesResponse:\n"); 538 output.append("GetUpdatesResponse:\n");
528 for (int i = 0; i < response.entries_size(); i++) { 539 for (int i = 0; i < response.entries_size(); i++) {
529 output.append(SyncerProtoUtil::SyncEntityDebugString(response.entries(i))); 540 output.append(SyncerProtoUtil::SyncEntityDebugString(response.entries(i)));
530 output.append("\n"); 541 output.append("\n");
531 } 542 }
532 return output; 543 return output;
533 } 544 }
534 } // namespace 545 } // namespace
535 546
536 std::string SyncerProtoUtil::ClientToServerResponseDebugString( 547 std::string SyncerProtoUtil::ClientToServerResponseDebugString(
537 const sync_pb::ClientToServerResponse& response) { 548 const ClientToServerResponse& response) {
538 // Add more handlers as needed. 549 // Add more handlers as needed.
539 std::string output; 550 std::string output;
540 if (response.has_get_updates()) 551 if (response.has_get_updates())
541 output.append(GetUpdatesResponseString(response.get_updates())); 552 output.append(GetUpdatesResponseString(response.get_updates()));
542 return output; 553 return output;
543 } 554 }
544 555
545 } // namespace syncer 556 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/syncer_proto_util.h ('k') | sync/engine/syncer_proto_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698