Index: sync/engine/non_blocking_type_commit_contribution.h |
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 0000000000000000000000000000000000000000..4d415caf21e95fb2a643bb9108a6340c9a297b36 |
--- /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_ |