158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef SYNC_ENGINE_GET_COMMIT_IDS_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define SYNC_ENGINE_GET_COMMIT_IDS_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <vector> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "sync/base/sync_export.h" 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "sync/internal_api/public/base/model_type.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "sync/syncable/directory.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)using std::vector; 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace syncer { 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace syncable { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class BaseTransaction; 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Returns up to |max_entries| metahandles of entries that belong to the 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// specified |type| and are ready for commit. 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// This function returns handles in "commit order". A valid commit ordering is 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// one where parents are placed before children, predecessors are placed before 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// successors, and deletes appear after creates and moves. 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// The predecessor to successor rule was implemented when we tracked positions 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// within a folder that was sensitive to such things. The current positioning 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// system can handle receiving the elements within a folder out of order, so we 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// may be able to remove that functionality in the future. 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// See crbug.com/287938. 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SYNC_EXPORT_PRIVATE void GetCommitIdsForType( 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) syncable::BaseTransaction* trans, 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ModelType type, 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) size_t max_entries, 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::vector<int64>* out); 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace syncer 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // SYNC_ENGINE_GET_COMMIT_IDS_H_ 43