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..be65c2e1880dfc9bae9a3cfce079c038b19f012b 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 |
@@ -199,13 +200,11 @@ void LogServerError(const CommitResponse_EntryResponse& res) { |
CommitResponse::ResponseType |
ProcessCommitResponseCommand::ProcessSingleCommitResponse( |
syncable::WriteTransaction* trans, |
- const sync_pb::CommitResponse_EntryResponse& pb_server_entry, |
+ const sync_pb::CommitResponse_EntryResponse& server_entry, |
const sync_pb::SyncEntity& commit_request_entry, |
const syncable::Id& pre_commit_id, |
set<syncable::Id>* deleted_folders) { |
- const CommitResponse_EntryResponse& server_entry = |
- *static_cast<const CommitResponse_EntryResponse*>(&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 +248,10 @@ 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()); |
+ const 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 +270,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 +280,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 +300,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 +316,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) { |
+ const 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 +395,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 +435,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 +444,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; |
} |