// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System;
namespace FASTER.core
{
    /// 
    /// Scan buffering mode
    /// 
    public enum ScanBufferingMode
    {
        /// 
        /// Buffer only current page being scanned
        /// 
        SinglePageBuffering,
        /// 
        /// Buffer current and next page in scan sequence
        /// 
        DoublePageBuffering,
        /// 
        /// Do not buffer - with this mode, you can only scan records already in main memory
        /// 
        NoBuffering
    }
    /// 
    /// Scan iterator interface for FASTER log
    /// 
    /// 
    /// 
    public interface IFasterScanIterator : IDisposable
    {
        /// 
        /// Gets reference to current key
        /// 
        /// 
        ref Key GetKey();
        /// 
        /// Gets reference to current value
        /// 
        /// 
        ref Value GetValue();
        /// 
        /// Get next record
        /// 
        /// 
        /// True if record found, false if end of scan
        bool GetNext(out RecordInfo recordInfo);
        /// 
        /// Get next record
        /// 
        /// 
        /// 
        /// 
        /// True if record found, false if end of scan
        bool GetNext(out RecordInfo recordInfo, out Key key, out Value value);
        /// 
        /// Current address
        /// 
        long CurrentAddress { get; }
    }
}