Class LogCounter
- java.lang.Object
-
- org.apache.derby.impl.store.raw.log.LogCounter
-
- All Implemented Interfaces:
java.io.Externalizable,java.io.Serializable,Formatable,TypedFormat,DatabaseInstant,LogInstant
public class LogCounter extends java.lang.Object implements LogInstant
A very simple log instant implementation. Within the stored log record a log counter is represented as a long, hence the getValueAsLong() method. Outside the LogFactory the instant is passed around as a LogCounter (through its LogInstant interface). The way the long is encoded is such that < == > correctly tells if one log instant is lessThan, equals or greater than another.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static longDERBY_10_0_MAX_LOGFILE_NUMBERprivate static longFILE_NUMBER_SHIFTprivate static longFILE_POSITION_MASKprivate longfileNumberprivate longfilePositionstatic longINVALID_LOG_INSTANTA well defined value of an invalid log instant.static longMAX_LOGFILE_NUMBERstatic longMAX_LOGFILE_SIZE
-
Constructor Summary
Constructors Constructor Description LogCounter()Public niladic constructor needed for Formatable interface.LogCounter(long value)LogCounter(long fileNumber, long position)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object other)Return true if this DatabaseInstant equals DatabaseInstant from the same database.longgetLogFileNumber()static longgetLogFileNumber(long valueAsLong)longgetLogFilePosition()static longgetLogFilePosition(long valueAsLong)intgetTypeFormatId()Get the formatID which corresponds to this class.longgetValueAsLong()These following methods are only intended to be called by an implementation of a log factory.inthashCode()booleanlessThan(DatabaseInstant other)LogScan methodsstatic longmakeLogInstantAsLong(long filenum, long filepos)Static functions that can only be used inside the RawStore's log factory which passes the log counter around encoded as a longDatabaseInstantnext()Return the next higher DatabaseInstant.DatabaseInstantprior()Return the next lower DatabaseInstant.voidreadExternal(java.io.ObjectInput oi)Read this in.static java.lang.StringtoDebugString(long instant)java.lang.StringtoString()Convert the database instant to a string.voidwriteExternal(java.io.ObjectOutput oo)Write this out.
-
-
-
Field Detail
-
INVALID_LOG_INSTANT
public static final long INVALID_LOG_INSTANT
A well defined value of an invalid log instant.- See Also:
- Constant Field Values
-
DERBY_10_0_MAX_LOGFILE_NUMBER
public static final long DERBY_10_0_MAX_LOGFILE_NUMBER
- See Also:
- Constant Field Values
-
MAX_LOGFILE_NUMBER
public static final long MAX_LOGFILE_NUMBER
- See Also:
- Constant Field Values
-
FILE_NUMBER_SHIFT
private static final long FILE_NUMBER_SHIFT
- See Also:
- Constant Field Values
-
MAX_LOGFILE_SIZE
public static final long MAX_LOGFILE_SIZE
- See Also:
- Constant Field Values
-
FILE_POSITION_MASK
private static final long FILE_POSITION_MASK
- See Also:
- Constant Field Values
-
fileNumber
private long fileNumber
-
filePosition
private long filePosition
-
-
Method Detail
-
makeLogInstantAsLong
public static final long makeLogInstantAsLong(long filenum, long filepos)Static functions that can only be used inside the RawStore's log factory which passes the log counter around encoded as a long
-
getLogFilePosition
public static final long getLogFilePosition(long valueAsLong)
-
getLogFileNumber
public static final long getLogFileNumber(long valueAsLong)
-
lessThan
public boolean lessThan(DatabaseInstant other)
LogScan methods- Specified by:
lessThanin interfaceDatabaseInstant- Parameters:
other- a DatabaseInstant from the same database as this.- Returns:
- the comparison result. If 'other' is from another database the result is undefined.
-
equals
public boolean equals(java.lang.Object other)
Description copied from interface:DatabaseInstantReturn true if this DatabaseInstant equals DatabaseInstant from the same database.- Specified by:
equalsin interfaceDatabaseInstant- Overrides:
equalsin classjava.lang.Object- Parameters:
other- a DatabaseInstant from the same database as this.- Returns:
- the comparison result. If 'other' is from another database the result is undefined.
-
next
public DatabaseInstant next()
Description copied from interface:DatabaseInstantReturn the next higher DatabaseInstant. There is no requirement that a transaction with the next instant exist in the database. It is required that this.lessThan( this.next()), and that no instant can be between this and this.next(). If the DatabaseInstant is implemented using a integer then next() should return a new DatabaseInstant formed by adding one to the integer.- Specified by:
nextin interfaceDatabaseInstant- Returns:
- the next possible DatabaseInstant
-
prior
public DatabaseInstant prior()
Description copied from interface:DatabaseInstantReturn the next lower DatabaseInstant. There is no requirement that a transaction with the next instant exist in the database. It is required that this.prior().lessThan( this), and that no instant can be between this and this.prior(). If the DatabaseInstant is implemented using a integer then prior() should return a new DatabaseInstant formed by subtracting one from the integer.- Specified by:
priorin interfaceDatabaseInstant- Returns:
- the prior possible DatabaseInstant
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
Description copied from interface:DatabaseInstantConvert the database instant to a string. This is mainly used for debugging.- Specified by:
toStringin interfaceDatabaseInstant- Overrides:
toStringin classjava.lang.Object- Returns:
- a string representation of the instant.
-
toDebugString
public static java.lang.String toDebugString(long instant)
-
getValueAsLong
public long getValueAsLong()
These following methods are only intended to be called by an implementation of a log factory. All other uses of this object should only see it as a log instant.
-
getLogFilePosition
public long getLogFilePosition()
-
getLogFileNumber
public long getLogFileNumber()
-
readExternal
public void readExternal(java.io.ObjectInput oi) throws java.io.IOException, java.lang.ClassNotFoundExceptionRead this in.- Specified by:
readExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException- error reading from log streamjava.lang.ClassNotFoundException- corrupted log stream
-
writeExternal
public void writeExternal(java.io.ObjectOutput oo) throws java.io.IOExceptionWrite this out.- Specified by:
writeExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException- error writing to log stream
-
getTypeFormatId
public int getTypeFormatId()
Get the formatID which corresponds to this class.- Specified by:
getTypeFormatIdin interfaceTypedFormat- Returns:
- the formatID of this class
-
-