diff options
| author | Andras Becsi <andras.becsi@digia.com> | 2014-03-18 13:16:26 +0100 |
|---|---|---|
| committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-20 15:55:39 +0100 |
| commit | 3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch) | |
| tree | 92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/sync/engine/commit.h | |
| parent | e90d7c4b152c56919d963987e2503f9909a666d2 (diff) | |
Update to new stable branch 1750
This also includes an updated ninja and chromium dependencies
needed on Windows.
Change-Id: Icd597d80ed3fa4425933c9f1334c3c2e31291c42
Reviewed-by: Zoltan Arvai <zarvai@inf.u-szeged.hu>
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'chromium/sync/engine/commit.h')
| -rw-r--r-- | chromium/sync/engine/commit.h | 73 |
1 files changed, 58 insertions, 15 deletions
diff --git a/chromium/sync/engine/commit.h b/chromium/sync/engine/commit.h index 168d950c276..4750971bc7c 100644 --- a/chromium/sync/engine/commit.h +++ b/chromium/sync/engine/commit.h @@ -5,33 +5,76 @@ #ifndef SYNC_ENGINE_COMMIT_H_ #define SYNC_ENGINE_COMMIT_H_ +#include <map> + +#include "base/stl_util.h" +#include "sync/base/sync_export.h" +#include "sync/engine/sync_directory_commit_contribution.h" +#include "sync/engine/sync_directory_commit_contributor.h" #include "sync/internal_api/public/base/model_type.h" +#include "sync/internal_api/public/engine/model_safe_worker.h" #include "sync/internal_api/public/util/syncer_error.h" +#include "sync/protocol/sync.pb.h" +#include "sync/util/extensions_activity.h" namespace syncer { namespace sessions { +class StatusController; class SyncSession; } class Syncer; -// This function will commit batches of unsynced items to the server until the -// number of unsynced and ready to commit items reaches zero or an error is -// encountered. A request to exit early will be treated as an error and will -// abort any blocking operations. -// -// The Syncer parameter is provided only for access to its ExitRequested() -// method. This is technically unnecessary since an early exit request should -// be detected as we attempt to contact the sync server. +// This class wraps the actions related to building and executing a single +// commit operation. // -// The SyncSession parameter contains pointers to various bits of state, -// including the syncable::Directory that contains all sync items and the -// ServerConnectionManager used to contact the server. -SyncerError BuildAndPostCommits( - ModelTypeSet request_types, - Syncer* syncer, - sessions::SyncSession* session); +// This class' most important responsibility is to manage the ContributionsMap. +// This class serves as a container for those objects. Although it would have +// been acceptable to let this class be a dumb container object, it turns out +// that there was no other convenient place to put the Init() and +// PostAndProcessCommitResponse() functions. So they ended up here. +class SYNC_EXPORT_PRIVATE Commit { + public: + Commit( + const std::map<ModelType, SyncDirectoryCommitContribution*>& + contributions, + const sync_pb::ClientToServerMessage& message, + ExtensionsActivity::Records extensions_activity_buffer); + + // This destructor will DCHECK if CleanUp() has not been called. + ~Commit(); + + static Commit* Init( + ModelTypeSet requested_types, + size_t max_entries, + const std::string& account_name, + const std::string& cache_guid, + CommitContributorMap* contributor_map, + ExtensionsActivity* extensions_activity); + + SyncerError PostAndProcessResponse( + sessions::SyncSession* session, + sessions::StatusController* status, + ExtensionsActivity* extensions_activity); + + // Cleans up state associated with this commit. Must be called before the + // destructor. + void CleanUp(); + + private: + typedef std::map<ModelType, SyncDirectoryCommitContribution*> ContributionMap; + + ContributionMap contributions_; + STLValueDeleter<ContributionMap> deleter_; + + sync_pb::ClientToServerMessage message_; + sync_pb::ClientToServerResponse response_; + ExtensionsActivity::Records extensions_activity_buffer_; + + // Debug only flag used to indicate if it's safe to destruct the object. + bool cleaned_up_; +}; } // namespace syncer |
