Class LogCounter

java.lang.Object
org.apache.derby.impl.store.raw.log.LogCounter
All Implemented Interfaces:
Externalizable, Serializable, Formatable, TypedFormat, DatabaseInstant, LogInstant

public class LogCounter extends 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:
  • Field Details

    • INVALID_LOG_INSTANT

      public static final long INVALID_LOG_INSTANT
      A 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

      public boolean lessThan(DatabaseInstant other)
      LogScan methods
      Specified by:
      lessThan in interface DatabaseInstant
      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(Object other)
      Description copied from interface: DatabaseInstant
      Return true if this DatabaseInstant equals DatabaseInstant from the same database.
      Specified by:
      equals in interface DatabaseInstant
      Overrides:
      equals in class 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: 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 interface DatabaseInstant
      Returns:
      the next possible DatabaseInstant
    • prior

      public 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 interface DatabaseInstant
      Returns:
      the prior possible DatabaseInstant
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Description copied from interface: DatabaseInstant
      Convert the database instant to a string. This is mainly used for debugging.
      Specified by:
      toString in interface DatabaseInstant
      Overrides:
      toString in class Object
      Returns:
      a string representation of the instant.
    • toDebugString

      public static 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(ObjectInput oi) throws IOException, ClassNotFoundException
      Read this in.
      Specified by:
      readExternal in interface Externalizable
      Throws:
      IOException - error reading from log stream
      ClassNotFoundException - corrupted log stream
    • writeExternal

      public void writeExternal(ObjectOutput oo) throws IOException
      Write this out.
      Specified by:
      writeExternal in interface Externalizable
      Throws:
      IOException - error writing to log stream
    • getTypeFormatId

      public int getTypeFormatId()
      Get the formatID which corresponds to this class.
      Specified by:
      getTypeFormatId in interface TypedFormat
      Returns:
      the formatID of this class