summaryrefslogtreecommitdiffstats
path: root/sync/engine/non_blocking_type_commit_contribution.h
diff options
context:
space:
mode:
Diffstat (limited to 'sync/engine/non_blocking_type_commit_contribution.h')
-rw-r--r--sync/engine/non_blocking_type_commit_contribution.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/sync/engine/non_blocking_type_commit_contribution.h b/sync/engine/non_blocking_type_commit_contribution.h
new file mode 100644
index 0000000..4d415ca
--- /dev/null
+++ b/sync/engine/non_blocking_type_commit_contribution.h
@@ -0,0 +1,66 @@
+// Copyright 2014 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_NON_BLOCKING_TYPE_COMMIT_CONTRIBUTION_H_
+#define SYNC_ENGINE_NON_BLOCKING_TYPE_COMMIT_CONTRIBUTION_H_
+
+#include <vector>
+
+#include "base/basictypes.h"
+#include "sync/engine/commit_contribution.h"
+#include "sync/protocol/sync.pb.h"
+
+namespace syncer {
+
+class NonBlockingTypeProcessorCore;
+
+// A non-blocking sync type's contribution to an outgoing commit message.
+//
+// Helps build a commit message and process its response. It collaborates
+// closely with the NonBlockingTypeProcessorCore.
+class NonBlockingTypeCommitContribution : public CommitContribution {
+ public:
+ NonBlockingTypeCommitContribution(
+ const sync_pb::DataTypeContext& context,
+ const google::protobuf::RepeatedPtrField<sync_pb::SyncEntity>& entities,
+ const std::vector<int64>& sequence_numbers,
+ NonBlockingTypeProcessorCore* processor_core);
+ virtual ~NonBlockingTypeCommitContribution();
+
+ // Implementation of CommitContribution
+ virtual void AddToCommitMessage(sync_pb::ClientToServerMessage* msg) OVERRIDE;
+ virtual SyncerError ProcessCommitResponse(
+ const sync_pb::ClientToServerResponse& response,
+ sessions::StatusController* status) OVERRIDE;
+ virtual void CleanUp() OVERRIDE;
+ virtual size_t GetNumEntries() const OVERRIDE;
+
+ private:
+ // A non-owned pointer back to the object that created this contribution.
+ NonBlockingTypeProcessorCore* const processor_core_;
+
+ // The type-global context information.
+ const sync_pb::DataTypeContext context_;
+
+ // The set of entities to be committed, serialized as SyncEntities.
+ const google::protobuf::RepeatedPtrField<sync_pb::SyncEntity> entities_;
+
+ // The sequence numbers associated with the pending commits. These match up
+ // with the entities_ vector.
+ const std::vector<int64> sequence_numbers_;
+
+ // The index in the commit message where this contribution's entities are
+ // added. Used to correlate per-item requests with per-item responses.
+ size_t entries_start_index_;
+
+ // A flag used to ensure this object's contract is respected. Helps to check
+ // that CleanUp() is called before the object is destructed.
+ bool cleaned_up_;
+
+ DISALLOW_COPY_AND_ASSIGN(NonBlockingTypeCommitContribution);
+};
+
+} // namespace syncer
+
+#endif // SYNC_ENGINE_NON_BLOCKING_TYPE_COMMIT_CONTRIBUTION_H_