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