package com.sleepycat.je.txn; import java.nio.ByteBuffer; import javax.transaction.xa.Xid; import com.sleepycat.je.log.LogEntryType; import com.sleepycat.je.log.LogReadable; import com.sleepycat.je.log.LogUtils; import com.sleepycat.je.log.LoggableObject; import com.sleepycat.je.utilint.DbLsn; import de.ovgu.cide.jakutil.*; /** * This class writes out a transaction prepare record. */ public class TxnPrepare extends TxnEnd { private Xid xid; public TxnPrepare( long id, Xid xid){ super(id,DbLsn.NULL_LSN); this.xid=xid; } /** * For constructing from the log. */ public TxnPrepare(){ } public Xid getXid(){ return xid; } /** * @see TxnEnd#getLogType */ public LogEntryType getLogType(){ return LogEntryType.LOG_TXN_PREPARE; } protected String getTagName(){ return "TxnPrepare"; } /** * @see LoggableObject#getLogSize */ public int getLogSize(){ return LogUtils.LONG_BYTES + LogUtils.getTimestampLogSize() + LogUtils.getXidSize(xid); } /** * @see LoggableObject#writeToLog */ public void writeToLog( ByteBuffer logBuffer){ LogUtils.writeLong(logBuffer,id); LogUtils.writeTimestamp(logBuffer,time); LogUtils.writeXid(logBuffer,xid); } /** * @see LogReadable#readFromLog */ public void readFromLog( ByteBuffer logBuffer, byte entryTypeVersion){ id=LogUtils.readLong(logBuffer); time=LogUtils.readTimestamp(logBuffer); xid=LogUtils.readXid(logBuffer); } /** * @see LogReadable#dumpLog */ public void dumpLog( StringBuffer sb, boolean verbose){ sb.append("<").append(getTagName()); sb.append(" id=\"").append(id); sb.append("\" xid=\"").append(xid); sb.append("\" time=\"").append(time); sb.append("\">"); sb.append("</").append(getTagName()).append(">"); } }