/*
* Copyright 2013 Jive Software, Inc
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.jivesoftware.os.amza.api.wal;
import com.jivesoftware.os.amza.api.IoStats;
import com.jivesoftware.os.amza.api.scan.RowStream;
import com.jivesoftware.os.amza.api.stream.Fps;
public interface WALReader {
/**
* Scans from the given fp offset (must be the start of a row) to the end of the WAL.
*
* @param offsetFp the fp offset
* @param allowRepairs whether to allow repairs/truncation if WAL corruption is detected (otherwise an exception is thrown)
* @param rowStream the callback stream
* @return true if the scan reaches the end of the WAL, otherwise false
* @throws Exception if an error occurred
*/
boolean scan(IoStats ioStats, long offsetFp, boolean allowRepairs, RowStream rowStream) throws Exception;
boolean reverseScan(IoStats ioStats, RowStream rowStream) throws Exception;
byte[] readTypeByteTxIdAndRow(long fp) throws Exception;
boolean read(IoStats ioStats, Fps fps, RowStream rowStream) throws Exception;
}