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 15namespace syncer { 16 17namespace syncable { 18class Directory; 19} 20 21class 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. 30class 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