diff options
Diffstat (limited to 'sync/engine/non_blocking_type_commit_contribution.h')
-rw-r--r-- | sync/engine/non_blocking_type_commit_contribution.h | 66 |
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_ |