org.apache.derby.impl.store.raw.log
Interface StreamLogScan

All Superinterfaces:
LogScan
All Known Implementing Classes:
FlushedScan, Scan

public interface StreamLogScan
extends LogScan

LogScan provides methods to read a log record and get its LogInstant in an already defined scan. A logscan also needs to know how to advance to the next log record.


Method Summary
 void close()
          Close this log scan.
 long getInstant()
          Get the instant of the record just retrieved with getNextRecord().
 LogInstant getLogInstant()
          Get the LogInstant for the record just retrieved with getNextRecord().
 long getLogRecordEnd()
          Get the log instant that is right after the record just retrieved with getNextRecord().
 LogRecord getNextRecord(ArrayInputStream input, TransactionId tranId, int groupmask)
          Get the next record in the scan and place its data in the passed in array.
 boolean isLogEndFuzzy()
           
 void resetPosition(LogInstant instant)
          Reset the scan to the given LogInstant so that getNextRecord get the log record AFTER the given LogInstant.
 

Method Detail

getNextRecord

public LogRecord getNextRecord(ArrayInputStream input,
                               TransactionId tranId,
                               int groupmask)
                        throws StandardException,
                               java.io.IOException
Get the next record in the scan and place its data in the passed in array. The scan is advanced to the next log record. If the input array is of insufficient size, getNextRecord must expand the array to accomodate the log record. User can optionally pass in a transaction Id and a group mask. If provided, only log record that matches the transaction Id and the group mask is returned.

Parameters:
input - the ArrayInputStream to put the log record
tranId - if non-null, only log record that equals tranId will be returned. If null, log records are not filtered on transaction Id.
groupmask - if non-zero, only log record whose Loggable's group value is included in the groupmask is returned. groupmask can be a bit wise OR of many Loggable groups. If zero, log records are not filtered on the Loggable's group.
Returns:
an object that represents the log record, return null if the scan has completed.
Throws:
StandardException - Standard Clooudscape error policy
java.io.IOException - Some I/O exception raised during reading the log record.

getInstant

public long getInstant()
Get the instant of the record just retrieved with getNextRecord().

Returns:
INVALID_LOG_INSTANT if no records have been returned yet or the scan has completed.

getLogRecordEnd

public long getLogRecordEnd()
Get the log instant that is right after the record just retrieved with getNextRecord(). Only valid for a forward scan and on a successful retrieval.

Returns:
INVALID_LOG_INSTANT if this is not a FORWARD scan or, no record have been returned yet or the scan has completed.

isLogEndFuzzy

public boolean isLogEndFuzzy()
Returns:
true if fuzzy log end found during forward scan, this happens if there was a partially written log records before the crash.

getLogInstant

public LogInstant getLogInstant()
Get the LogInstant for the record just retrieved with getNextRecord().

Returns:
null if no records have been returned yet or the scan has completed.

resetPosition

public void resetPosition(LogInstant instant)
                   throws java.io.IOException,
                          StandardException
Reset the scan to the given LogInstant so that getNextRecord get the log record AFTER the given LogInstant.

Parameters:
instant - the log instant to reset to
Throws:
java.io.IOException - Some I/O exception raised when accessing the log file
StandardException - reset to illegal position or beyond the limit of the scan.

close

public void close()
Close this log scan.


Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.