package com.sleepycat.je.tree; import java.nio.ByteBuffer; import com.sleepycat.je.log.LogException; import com.sleepycat.je.log.LogReadable; import com.sleepycat.je.log.LogUtils; import com.sleepycat.je.log.LogWritable; import com.sleepycat.je.utilint.DbLsn; import de.ovgu.cide.jakutil.*; /** * DeltaInfo holds the delta for one BIN entry in a partial BIN log entry. * The data here is all that we need to update a BIN to its proper state. */ public class DeltaInfo implements LogWritable, LogReadable { private byte[] key; private long lsn; private byte state; DeltaInfo( byte[] key, long lsn, byte state){ this.key=key; this.lsn=lsn; this.state=state; } /** * For reading from the log only. */ DeltaInfo(){ lsn=DbLsn.NULL_LSN; } public int getLogSize(){ return LogUtils.getByteArrayLogSize(key) + LogUtils.getLongLogSize() + 1; } public void writeToLog( ByteBuffer logBuffer){ LogUtils.writeByteArray(logBuffer,key); LogUtils.writeLong(logBuffer,lsn); logBuffer.put(state); } public void readFromLog( ByteBuffer itemBuffer, byte entryTypeVersion) throws LogException { key=LogUtils.readByteArray(itemBuffer); lsn=LogUtils.readLong(itemBuffer); state=itemBuffer.get(); } public void dumpLog( StringBuffer sb, boolean verbose){ sb.append(Key.dumpString(key,0)); sb.append(DbLsn.toString(lsn)); IN.dumpDeletedState(sb,state); } /** * @see LogReadable#logEntryIsTransactional */ public boolean logEntryIsTransactional(){ return false; } /** * @see LogReadable#getTransactionId */ public long getTransactionId(){ return 0; } /** * @return the Key. */ byte[] getKey(){ return key; } /** * @return the state flags. */ byte getState(){ return state; } /** * @return true if this is known to be deleted. */ boolean isKnownDeleted(){ return IN.isStateKnownDeleted(state); } /** * @return the LSN. */ long getLsn(){ return lsn; } }