01: /*-
02: * See the file LICENSE for redistribution information.
03: *
04: * Copyright (c) 2002,2008 Oracle. All rights reserved.
05: *
06: * $Id: LogEntry.java,v 1.18.2.4 2008/01/07 15:14:13 cwl Exp $
07: */
08:
09: package com.sleepycat.je.log.entry;
10:
11: import java.nio.ByteBuffer;
12:
13: import com.sleepycat.je.DatabaseException;
14: import com.sleepycat.je.log.LogEntryHeader;
15: import com.sleepycat.je.log.LogEntryType;
16:
17: /**
18: * A Log entry allows you to read, write and dump a database log entry. Each
19: * entry may be made up of one or more loggable items.
20: *
21: * The log entry on disk consists of
22: * a. a log header defined by LogManager
23: * b. a VLSN, if this entry type requires it, and replication is on.
24: * c. the specific contents of the log entry.
25: *
26: * This class encompasses (b & c).
27: */
28: public interface LogEntry extends Cloneable {
29:
30: /**
31: * Inform a LogEntry instance of its corresponding LogEntryType.
32: */
33: public void setLogType(LogEntryType entryType);
34:
35: /**
36: * @return the type of log entry
37: */
38: public LogEntryType getLogType();
39:
40: /**
41: * Read in an log entry.
42: */
43: public void readEntry(LogEntryHeader header,
44: ByteBuffer entryBuffer, boolean readFullItem)
45: throws DatabaseException;
46:
47: /**
48: * Print out the contents of an entry.
49: */
50: public StringBuffer dumpEntry(StringBuffer sb, boolean verbose);
51:
52: /**
53: * @return the first item of the log entry
54: */
55: public Object getMainItem();
56:
57: /**
58: * @return return the transaction id if this log entry is transactional,
59: * 0 otherwise.
60: */
61: public long getTransactionId();
62:
63: /**
64: * @return size of byte buffer needed to store this entry.
65: */
66: public int getSize();
67:
68: /**
69: * Sets the total size of the last logged entry, including the header.
70: * Must be called after calling readEntry and writeEntry. Some entries
71: * (LNs) save the last logged size.
72: */
73: public void setLastLoggedSize(int size);
74:
75: /**
76: * Serialize this object into the buffer.
77: * @param logBuffer is the destination buffer
78: */
79: public void writeEntry(LogEntryHeader header, ByteBuffer logBuffer);
80:
81: /**
82: * Returns true if this item should be counted as obsoleted when logged.
83: * This currently applies to deleted LNs only.
84: */
85: public boolean countAsObsoleteWhenLogged();
86:
87: /**
88: * Do any processing we need to do after logging, while under the logging
89: * latch.
90: */
91: public void postLogWork(long justLoggedLsn)
92: throws DatabaseException;
93:
94: /**
95: * @return a shallow clone.
96: */
97: public Object clone() throws CloneNotSupportedException;
98: }
|