package com.sleepycat.je.tree; import java.nio.ByteBuffer; import com.sleepycat.je.dbi.DatabaseId; import com.sleepycat.je.log.LogEntryType; 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.log.LoggableObject; import de.ovgu.cide.jakutil.*; /** * INDeleteInfo encapsulates the information logged about the removal of a * child from an IN during IN compression. */ public class INDeleteInfo implements LoggableObject, LogReadable, LogWritable { private long deletedNodeId; private byte[] deletedIdKey; private DatabaseId dbId; /** * Create a new delete info entry. */ public INDeleteInfo( long deletedNodeId, byte[] deletedIdKey, DatabaseId dbId){ this.deletedNodeId=deletedNodeId; this.deletedIdKey=deletedIdKey; this.dbId=dbId; } /** * Used by logging system only. */ public INDeleteInfo(){ dbId=new DatabaseId(); } public long getDeletedNodeId(){ return deletedNodeId; } public byte[] getDeletedIdKey(){ return deletedIdKey; } public DatabaseId getDatabaseId(){ return dbId; } /** * @see LoggableObject#getLogType */ public LogEntryType getLogType(){ return LogEntryType.LOG_IN_DELETE_INFO; } /** * @see LoggableObject#marshallOutsideWriteLatchCan be marshalled outside the log write latch. */ public boolean marshallOutsideWriteLatch(){ return true; } /** * @see LoggableObject#countAsObsoleteWhenLogged */ public boolean countAsObsoleteWhenLogged(){ return false; } /** * @see LoggableObject#postLogWork */ public void postLogWork( long justLoggedLsn){ } /** * @see LoggableObject#getLogSize */ public int getLogSize(){ return LogUtils.LONG_BYTES + LogUtils.getByteArrayLogSize(deletedIdKey) + dbId.getLogSize(); } /** * @see LogWritable#writeToLog */ public void writeToLog( ByteBuffer logBuffer){ LogUtils.writeLong(logBuffer,deletedNodeId); LogUtils.writeByteArray(logBuffer,deletedIdKey); dbId.writeToLog(logBuffer); } /** * @see LogReadable#readFromLog */ public void readFromLog( ByteBuffer itemBuffer, byte entryTypeVersion) throws LogException { deletedNodeId=LogUtils.readLong(itemBuffer); deletedIdKey=LogUtils.readByteArray(itemBuffer); dbId.readFromLog(itemBuffer,entryTypeVersion); } /** * @see LogReadable#dumpLog */ public void dumpLog( StringBuffer sb, boolean verbose){ sb.append("<INDeleteEntry node=\"").append(deletedNodeId); sb.append("\">"); sb.append(Key.dumpString(deletedIdKey,0)); dbId.dumpLog(sb,verbose); sb.append("</INDeleteEntry>"); } /** * @see LogReadable#logEntryIsTransactional */ public boolean logEntryIsTransactional(){ return false; } /** * @see LogReadable#getTransactionId */ public long getTransactionId(){ return 0; } }