Class LogCounter
java.lang.Object
org.apache.derby.impl.store.raw.log.LogCounter
- All Implemented Interfaces:
Externalizable
,Serializable
,Formatable
,TypedFormat
,DatabaseInstant
,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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final long
private static final long
private static final long
private long
private long
static final long
A well defined value of an invalid log instant.static final long
static final long
-
Constructor Summary
ConstructorsConstructorDescriptionPublic niladic constructor needed for Formatable interface.LogCounter
(long value) LogCounter
(long fileNumber, long position) -
Method Summary
Modifier and TypeMethodDescriptionboolean
Return true if this DatabaseInstant equals DatabaseInstant from the same database.long
static final long
getLogFileNumber
(long valueAsLong) long
static final long
getLogFilePosition
(long valueAsLong) int
Get the formatID which corresponds to this class.long
These following methods are only intended to be called by an implementation of a log factory.int
hashCode()
boolean
lessThan
(DatabaseInstant other) LogScan methodsstatic 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 longnext()
Return the next higher DatabaseInstant.prior()
Return the next lower DatabaseInstant.void
Read this in.static String
toDebugString
(long instant) toString()
Convert the database instant to a string.void
Write this out.
-
Field Details
-
INVALID_LOG_INSTANT
public static final long INVALID_LOG_INSTANTA well defined value of an invalid log instant.- See Also:
-
DERBY_10_0_MAX_LOGFILE_NUMBER
public static final long DERBY_10_0_MAX_LOGFILE_NUMBER- See Also:
-
MAX_LOGFILE_NUMBER
public static final long MAX_LOGFILE_NUMBER- See Also:
-
FILE_NUMBER_SHIFT
private static final long FILE_NUMBER_SHIFT- See Also:
-
MAX_LOGFILE_SIZE
public static final long MAX_LOGFILE_SIZE- See Also:
-
FILE_POSITION_MASK
private static final long FILE_POSITION_MASK- See Also:
-
fileNumber
private long fileNumber -
filePosition
private long filePosition
-
-
Constructor Details
-
LogCounter
public LogCounter(long value) -
LogCounter
public LogCounter(long fileNumber, long position) -
LogCounter
public LogCounter()Public niladic constructor needed for Formatable interface.
-
-
Method Details
-
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
LogScan methods- Specified by:
lessThan
in 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
Description copied from interface:DatabaseInstant
Return true if this DatabaseInstant equals DatabaseInstant from the same database.- Specified by:
equals
in interfaceDatabaseInstant
- Overrides:
equals
in classObject
- 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
Description copied from interface:DatabaseInstant
Return 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:
next
in interfaceDatabaseInstant
- Returns:
- the next possible DatabaseInstant
-
prior
Description copied from interface:DatabaseInstant
Return 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:
prior
in interfaceDatabaseInstant
- Returns:
- the prior possible DatabaseInstant
-
hashCode
public int hashCode() -
toString
Description copied from interface:DatabaseInstant
Convert the database instant to a string. This is mainly used for debugging.- Specified by:
toString
in interfaceDatabaseInstant
- Overrides:
toString
in classObject
- Returns:
- a string representation of the instant.
-
toDebugString
-
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
Read this in.- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
- error reading from log streamClassNotFoundException
- corrupted log stream
-
writeExternal
Write this out.- Specified by:
writeExternal
in interfaceExternalizable
- Throws:
IOException
- error writing to log stream
-
getTypeFormatId
public int getTypeFormatId()Get the formatID which corresponds to this class.- Specified by:
getTypeFormatId
in interfaceTypedFormat
- Returns:
- the formatID of this class
-