summaryrefslogtreecommitdiffstats
path: root/sync/engine/process_commit_response_command.h
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-15 09:35:42 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-15 09:35:42 +0000
commitc1c32c85357f14756247b04b8b5ae41b05bf2e16 (patch)
tree58f25f64e1fa592e8daf276ef69901cd2218f929 /sync/engine/process_commit_response_command.h
parent63ee33bde2ec8471a70f0f0ec6a1962dd07fc8ab (diff)
downloadchromium_src-c1c32c85357f14756247b04b8b5ae41b05bf2e16.zip
chromium_src-c1c32c85357f14756247b04b8b5ae41b05bf2e16.tar.gz
chromium_src-c1c32c85357f14756247b04b8b5ae41b05bf2e16.tar.bz2
[Sync] Move 'sync' target to sync/
Also move related test files. Move WriteNode::UpdateEntryWithEncryption to nigori_util.h. Clean up defines and dependencies. In particular, get rid of SYNC_ENGINE_VERSION_STRING and hard-code the string in the single place it's used. Rename data_encryption.* to data_encryption_win.* and add a pragma for crypt32.lib. Clean up exit-time constructor warnings in sync{able,er}_unittest.cc. Remove some unused files. BUG=117585 TEST= TBR=jhawkins@chromium.org Review URL: https://chromiumcodereview.appspot.com/9699057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126872 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/engine/process_commit_response_command.h')
-rw-r--r--sync/engine/process_commit_response_command.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/sync/engine/process_commit_response_command.h b/sync/engine/process_commit_response_command.h
new file mode 100644
index 0000000..8e288de
--- /dev/null
+++ b/sync/engine/process_commit_response_command.h
@@ -0,0 +1,101 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SYNC_ENGINE_PROCESS_COMMIT_RESPONSE_COMMAND_H_
+#define SYNC_ENGINE_PROCESS_COMMIT_RESPONSE_COMMAND_H_
+#pragma once
+
+#include <set>
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "sync/engine/model_changing_syncer_command.h"
+#include "sync/engine/syncproto.h"
+
+namespace syncable {
+class Id;
+class WriteTransaction;
+class MutableEntry;
+}
+
+namespace browser_sync {
+
+class ProcessCommitResponseCommand : public ModelChangingSyncerCommand {
+ public:
+
+ ProcessCommitResponseCommand();
+ virtual ~ProcessCommitResponseCommand();
+
+ protected:
+ // ModelChangingSyncerCommand implementation.
+ virtual std::set<ModelSafeGroup> GetGroupsToChange(
+ const sessions::SyncSession& session) const OVERRIDE;
+ virtual SyncerError ModelNeutralExecuteImpl(
+ sessions::SyncSession* session) OVERRIDE;
+ virtual SyncerError ModelChangingExecuteImpl(
+ sessions::SyncSession* session) OVERRIDE;
+
+ private:
+ CommitResponse::ResponseType ProcessSingleCommitResponse(
+ syncable::WriteTransaction* trans,
+ const sync_pb::CommitResponse_EntryResponse& pb_commit_response,
+ const sync_pb::SyncEntity& pb_committed_entry,
+ const syncable::Id& pre_commit_id,
+ std::set<syncable::Id>* conflicting_new_directory_ids,
+ std::set<syncable::Id>* deleted_folders);
+
+ // Actually does the work of execute.
+ SyncerError ProcessCommitResponse(sessions::SyncSession* session);
+
+ void ProcessSuccessfulCommitResponse(
+ const sync_pb::SyncEntity& committed_entry,
+ const CommitResponse_EntryResponse& entry_response,
+ const syncable::Id& pre_commit_id, syncable::MutableEntry* local_entry,
+ bool syncing_was_set, std::set<syncable::Id>* deleted_folders);
+
+ // Update the BASE_VERSION and SERVER_VERSION, post-commit.
+ // Helper for ProcessSuccessfulCommitResponse.
+ bool UpdateVersionAfterCommit(
+ const sync_pb::SyncEntity& committed_entry,
+ const CommitResponse_EntryResponse& entry_response,
+ const syncable::Id& pre_commit_id,
+ syncable::MutableEntry* local_entry);
+
+ // If the server generated an ID for us during a commit, apply the new ID.
+ // Helper for ProcessSuccessfulCommitResponse.
+ bool ChangeIdAfterCommit(
+ const CommitResponse_EntryResponse& entry_response,
+ const syncable::Id& pre_commit_id,
+ syncable::MutableEntry* local_entry);
+
+ // Update the SERVER_ fields to reflect the server state after committing.
+ // Helper for ProcessSuccessfulCommitResponse.
+ void UpdateServerFieldsAfterCommit(
+ const sync_pb::SyncEntity& committed_entry,
+ const CommitResponse_EntryResponse& entry_response,
+ syncable::MutableEntry* local_entry);
+
+ // The server can override some values during a commit; the overridden values
+ // are returned as fields in the CommitResponse_EntryResponse. This method
+ // stores the fields back in the client-visible (i.e. not the SERVER_* fields)
+ // fields of the entry. This should only be done if the item did not change
+ // locally while the commit was in flight.
+ // Helper for ProcessSuccessfulCommitResponse.
+ void OverrideClientFieldsAfterCommit(
+ const sync_pb::SyncEntity& committed_entry,
+ const CommitResponse_EntryResponse& entry_response,
+ syncable::MutableEntry* local_entry);
+
+ // Helper to extract the final name from the protobufs.
+ const std::string& GetResultingPostCommitName(
+ const sync_pb::SyncEntity& committed_entry,
+ const CommitResponse_EntryResponse& entry_response);
+
+ DISALLOW_COPY_AND_ASSIGN(ProcessCommitResponseCommand);
+};
+
+} // namespace browser_sync
+
+#endif // SYNC_ENGINE_PROCESS_COMMIT_RESPONSE_COMMAND_H_