Chromium Code Reviews| Index: sync/engine/process_commit_response_command.cc |
| diff --git a/sync/engine/process_commit_response_command.cc b/sync/engine/process_commit_response_command.cc |
| index 26dca0e28ec90e5b9185ffb4269b0b1365875202..e76412ea3214a1cfec4e097889f2b1c3b552f8ae 100644 |
| --- a/sync/engine/process_commit_response_command.cc |
| +++ b/sync/engine/process_commit_response_command.cc |
| @@ -13,11 +13,11 @@ |
| #include "base/location.h" |
| #include "sync/engine/syncer_proto_util.h" |
| #include "sync/engine/syncer_util.h" |
| -#include "sync/engine/syncproto.h" |
| #include "sync/sessions/sync_session.h" |
| #include "sync/syncable/entry.h" |
| #include "sync/syncable/mutable_entry.h" |
| #include "sync/syncable/read_transaction.h" |
| +#include "sync/syncable/syncable_proto_util.h" |
| #include "sync/syncable/syncable_util.h" |
| #include "sync/syncable/write_transaction.h" |
| #include "sync/util/time.h" |
| @@ -25,6 +25,7 @@ |
| using std::set; |
| using std::string; |
| using std::vector; |
| +using sync_pb::CommitResponse; |
| namespace syncer { |
| @@ -52,8 +53,8 @@ using syncable::SYNCING; |
| ProcessCommitResponseCommand::ProcessCommitResponseCommand( |
| const sessions::OrderedCommitSet& commit_set, |
| - const ClientToServerMessage& commit_message, |
| - const ClientToServerResponse& commit_response) |
| + const sync_pb::ClientToServerMessage& commit_message, |
| + const sync_pb::ClientToServerResponse& commit_response) |
| : commit_set_(commit_set), |
| commit_message_(commit_message), |
| commit_response_(commit_response) { |
| @@ -189,7 +190,7 @@ SyncerError ProcessCommitResponseCommand::ProcessCommitResponse( |
| } |
| } |
| -void LogServerError(const CommitResponse_EntryResponse& res) { |
| +void LogServerError(const sync_pb::CommitResponse_EntryResponse& res) { |
| if (res.has_error_message()) |
| LOG(WARNING) << " " << res.error_message(); |
| else |
| @@ -204,8 +205,9 @@ ProcessCommitResponseCommand::ProcessSingleCommitResponse( |
| const syncable::Id& pre_commit_id, |
| set<syncable::Id>* deleted_folders) { |
| - const CommitResponse_EntryResponse& server_entry = |
| - *static_cast<const CommitResponse_EntryResponse*>(&pb_server_entry); |
| + const sync_pb::CommitResponse_EntryResponse& server_entry = |
| + *static_cast<const sync_pb::CommitResponse_EntryResponse*>( |
|
akalin
2012/07/11 01:42:22
static cast not needed anymore?
rlarocque
2012/07/11 19:22:16
Done.
|
| + &pb_server_entry); |
| MutableEntry local_entry(trans, GET_BY_ID, pre_commit_id); |
| CHECK(local_entry.good()); |
| bool syncing_was_set = local_entry.Get(SYNCING); |
| @@ -249,8 +251,9 @@ ProcessCommitResponseCommand::ProcessSingleCommitResponse( |
| DCHECK_EQ(CommitResponse::SUCCESS, response) << response; |
| // Check to see if we've been given the ID of an existing entry. If so treat |
| // it as an error response and retry later. |
| - if (pre_commit_id != server_entry.id()) { |
| - Entry e(trans, GET_BY_ID, server_entry.id()); |
| + syncable::Id server_entry_id = SyncableIdFromProto(server_entry.id_string()); |
| + if (pre_commit_id != server_entry_id) { |
| + Entry e(trans, GET_BY_ID, server_entry_id); |
| if (e.good()) { |
| LOG(ERROR) << "Got duplicate id when commiting id: " << pre_commit_id << |
| ". Treating as an error return"; |
| @@ -269,7 +272,7 @@ ProcessCommitResponseCommand::ProcessSingleCommitResponse( |
| const string& ProcessCommitResponseCommand::GetResultingPostCommitName( |
| const sync_pb::SyncEntity& committed_entry, |
| - const CommitResponse_EntryResponse& entry_response) { |
| + const sync_pb::CommitResponse_EntryResponse& entry_response) { |
| const string& response_name = |
| SyncerProtoUtil::NameFromCommitEntryResponse(entry_response); |
| if (!response_name.empty()) |
| @@ -279,7 +282,7 @@ const string& ProcessCommitResponseCommand::GetResultingPostCommitName( |
| bool ProcessCommitResponseCommand::UpdateVersionAfterCommit( |
| const sync_pb::SyncEntity& committed_entry, |
| - const CommitResponse_EntryResponse& entry_response, |
| + const sync_pb::CommitResponse_EntryResponse& entry_response, |
| const syncable::Id& pre_commit_id, |
| syncable::MutableEntry* local_entry) { |
| int64 old_version = local_entry->Get(BASE_VERSION); |
| @@ -299,8 +302,8 @@ bool ProcessCommitResponseCommand::UpdateVersionAfterCommit( |
| } |
| if (bad_commit_version) { |
| LOG(ERROR) << "Bad version in commit return for " << *local_entry |
| - << " new_id:" << entry_response.id() << " new_version:" |
| - << entry_response.version(); |
| + << " new_id:" << SyncableIdFromProto(entry_response.id_string()) |
| + << " new_version:" << entry_response.version(); |
| return false; |
| } |
| @@ -315,33 +318,35 @@ bool ProcessCommitResponseCommand::UpdateVersionAfterCommit( |
| } |
| bool ProcessCommitResponseCommand::ChangeIdAfterCommit( |
| - const CommitResponse_EntryResponse& entry_response, |
| + const sync_pb::CommitResponse_EntryResponse& entry_response, |
| const syncable::Id& pre_commit_id, |
| syncable::MutableEntry* local_entry) { |
| syncable::WriteTransaction* trans = local_entry->write_transaction(); |
| - if (entry_response.id() != pre_commit_id) { |
| + syncable::Id entry_response_id = |
| + SyncableIdFromProto(entry_response.id_string()); |
| + if (entry_response_id != pre_commit_id) { |
| if (pre_commit_id.ServerKnows()) { |
| // The server can sometimes generate a new ID on commit; for example, |
| // when committing an undeletion. |
| DVLOG(1) << " ID changed while committing an old entry. " |
| - << pre_commit_id << " became " << entry_response.id() << "."; |
| + << pre_commit_id << " became " << entry_response_id << "."; |
| } |
| - MutableEntry same_id(trans, GET_BY_ID, entry_response.id()); |
| + MutableEntry same_id(trans, GET_BY_ID, entry_response_id); |
| // We should trap this before this function. |
| if (same_id.good()) { |
| - LOG(ERROR) << "ID clash with id " << entry_response.id() |
| + LOG(ERROR) << "ID clash with id " << entry_response_id |
| << " during commit " << same_id; |
| return false; |
| } |
| - ChangeEntryIDAndUpdateChildren(trans, local_entry, entry_response.id()); |
| - DVLOG(1) << "Changing ID to " << entry_response.id(); |
| + ChangeEntryIDAndUpdateChildren(trans, local_entry, entry_response_id); |
| + DVLOG(1) << "Changing ID to " << entry_response_id; |
| } |
| return true; |
| } |
| void ProcessCommitResponseCommand::UpdateServerFieldsAfterCommit( |
| const sync_pb::SyncEntity& committed_entry, |
| - const CommitResponse_EntryResponse& entry_response, |
| + const sync_pb::CommitResponse_EntryResponse& entry_response, |
| syncable::MutableEntry* local_entry) { |
| // We just committed an entry successfully, and now we want to make our view |
| @@ -392,7 +397,7 @@ void ProcessCommitResponseCommand::UpdateServerFieldsAfterCommit( |
| void ProcessCommitResponseCommand::OverrideClientFieldsAfterCommit( |
| const sync_pb::SyncEntity& committed_entry, |
| - const CommitResponse_EntryResponse& entry_response, |
| + const sync_pb::CommitResponse_EntryResponse& entry_response, |
| syncable::MutableEntry* local_entry) { |
| if (committed_entry.deleted()) { |
| // If an entry's been deleted, nothing else matters. |
| @@ -432,7 +437,7 @@ void ProcessCommitResponseCommand::OverrideClientFieldsAfterCommit( |
| void ProcessCommitResponseCommand::ProcessSuccessfulCommitResponse( |
| const sync_pb::SyncEntity& committed_entry, |
| - const CommitResponse_EntryResponse& entry_response, |
| + const sync_pb::CommitResponse_EntryResponse& entry_response, |
| const syncable::Id& pre_commit_id, syncable::MutableEntry* local_entry, |
| bool syncing_was_set, set<syncable::Id>* deleted_folders) { |
| DCHECK(local_entry->Get(IS_UNSYNCED)); |
| @@ -441,8 +446,8 @@ void ProcessCommitResponseCommand::ProcessSuccessfulCommitResponse( |
| if (!UpdateVersionAfterCommit(committed_entry, entry_response, pre_commit_id, |
| local_entry)) { |
| LOG(ERROR) << "Bad version in commit return for " << *local_entry |
| - << " new_id:" << entry_response.id() << " new_version:" |
| - << entry_response.version(); |
| + << " new_id:" << SyncableIdFromProto(entry_response.id_string()) |
| + << " new_version:" << entry_response.version(); |
| return; |
| } |