com.sleepycat.je.log
Class LogEntryHeader

java.lang.Object
  extended by com.sleepycat.je.log.LogEntryHeader

public class LogEntryHeader
extends java.lang.Object

A LogEntryHeader embodies the header information at the beginning of each log entry file.


Field Summary
static int MAX_HEADER_SIZE
           
 
Constructor Summary
LogEntryHeader(EnvironmentImpl envImpl, java.nio.ByteBuffer entryBuffer, boolean anticipateChecksumErrors)
          For reading a log entry.
LogEntryHeader(LogEntry entry, Provisional provisional, ReplicationContext repContext)
          For writing a log header.
 
Method Summary
 java.nio.ByteBuffer addPostMarshallingInfo(EnvironmentImpl envImpl, java.nio.ByteBuffer entryBuffer, long lastOffset, ReplicationContext repContext)
          Add those parts of the header that must be calculated later to the entryBuffer, and also assign the fields in this class.
 void dumpLog(java.lang.StringBuffer sb, boolean verbose)
           
 long getChecksum()
           
 int getItemSize()
           
 long getPrevOffset()
           
 Provisional getProvisional()
           
 boolean getReplicated()
           
 int getSize()
           
 byte getType()
           
 int getVariablePortionSize()
           
 byte getVersion()
           
 VLSN getVLSN()
           
static VLSN getVLSN(java.nio.ByteBuffer buffer)
          Return the VLSN for the log entry header in this byte buffer.
static boolean isSyncPoint(java.nio.ByteBuffer buffer)
          Return whether the log entry represented by this byte buffer is a replication sync possible type log entry.
 boolean logicalEquals(LogEntryHeader other)
           
 void readVariablePortion(java.nio.ByteBuffer entryBuffer)
          Assumes this is called directly after the constructor, and that the entryBuffer is positioned right before the VLSN.
 java.lang.String toString()
           
 void writeToLog(java.nio.ByteBuffer entryBuffer)
          Serialize this object into the buffer and leave the buffer positioned in the right place to write the following item.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_HEADER_SIZE

public static final int MAX_HEADER_SIZE
See Also:
Constant Field Values
Constructor Detail

LogEntryHeader

public LogEntryHeader(EnvironmentImpl envImpl,
                      java.nio.ByteBuffer entryBuffer,
                      boolean anticipateChecksumErrors)
               throws DbChecksumException
For reading a log entry.

Parameters:
anticipateChecksumErrors - if true, invalidate the environment if the entry header is invalid.
Throws:
DbChecksumException - if the entry is invalid. If anticipateChecksumErrors is true and envImpl is not null, the environment is also invalidated.

LogEntryHeader

public LogEntryHeader(LogEntry entry,
                      Provisional provisional,
                      ReplicationContext repContext)
For writing a log header. public for unit tests.

Method Detail

getChecksum

public long getChecksum()

getType

public byte getType()

getVersion

public byte getVersion()

getPrevOffset

public long getPrevOffset()

getItemSize

public int getItemSize()

getVLSN

public VLSN getVLSN()

getReplicated

public boolean getReplicated()

getProvisional

public Provisional getProvisional()

getVariablePortionSize

public int getVariablePortionSize()

getSize

public int getSize()
Returns:
number of bytes used to store this header

readVariablePortion

public void readVariablePortion(java.nio.ByteBuffer entryBuffer)
                         throws LogException
Assumes this is called directly after the constructor, and that the entryBuffer is positioned right before the VLSN.

Throws:
LogException

writeToLog

public void writeToLog(java.nio.ByteBuffer entryBuffer)
Serialize this object into the buffer and leave the buffer positioned in the right place to write the following item. The checksum, prevEntry, and vlsn values will filled in later on. public for unit tests.


addPostMarshallingInfo

public java.nio.ByteBuffer addPostMarshallingInfo(EnvironmentImpl envImpl,
                                                  java.nio.ByteBuffer entryBuffer,
                                                  long lastOffset,
                                                  ReplicationContext repContext)
Add those parts of the header that must be calculated later to the entryBuffer, and also assign the fields in this class. That's - the prev offset, which must be done within the log write latch to be sure what that lsn is - the VLSN, for the same reason - the checksumVal, which must be added last, after all other fields are marshalled. (public for unit tests)


dumpLog

public void dumpLog(java.lang.StringBuffer sb,
                    boolean verbose)
Parameters:
sb - destination string buffer
verbose - if true, dump the full, verbose version

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

logicalEquals

public boolean logicalEquals(LogEntryHeader other)
Returns:
true if these two log headers are logically the same. Used for replication.

isSyncPoint

public static boolean isSyncPoint(java.nio.ByteBuffer buffer)
                           throws DbChecksumException
Return whether the log entry represented by this byte buffer is a replication sync possible type log entry. Leaves the byte buffer's position unchanged.

Throws:
DbChecksumException

getVLSN

public static VLSN getVLSN(java.nio.ByteBuffer buffer)
                    throws DatabaseException
Return the VLSN for the log entry header in this byte buffer. Leaves the byte buffer's position unchanged.

Throws:
DatabaseException