1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_ 6 #define SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_ 7 8 #include <map> 9 10 #include "base/memory/scoped_ptr.h" 11 #include "sync/engine/commit_contributor.h" 12 #include "sync/engine/directory_commit_contribution.h" 13 #include "sync/internal_api/public/base/model_type.h" 14 15 namespace syncer { 16 17 namespace syncable { 18 class Directory; 19 } 20 21 class DirectoryTypeDebugInfoEmitter; 22 23 // This class represents the syncable::Directory as a source of items to commit 24 // to the sync server. 25 // 26 // Each instance of this class represents a particular type within the 27 // syncable::Directory. When asked, it will iterate through the directory, grab 28 // any items of its type that are ready for commit, and return them in the form 29 // of a DirectoryCommitContribution. 30 class DirectoryCommitContributor : public CommitContributor { 31 public: 32 DirectoryCommitContributor(syncable::Directory* dir, 33 ModelType type, 34 DirectoryTypeDebugInfoEmitter* debug_info_emitter); 35 virtual ~DirectoryCommitContributor(); 36 37 virtual scoped_ptr<CommitContribution> GetContribution( 38 size_t max_entries) OVERRIDE; 39 40 private: 41 syncable::Directory* dir_; 42 ModelType type_; 43 44 DirectoryTypeDebugInfoEmitter* debug_info_emitter_; 45 46 DISALLOW_COPY_AND_ASSIGN(DirectoryCommitContributor); 47 }; 48 49 } // namespace 50 51 #endif // SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_ 52