public class ReplicationLogBuffer
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
private LogBufferElement |
currentDirtyBuffer |
static int |
DEFAULT_NUMBER_LOG_BUFFERS |
private int |
defaultBufferSize |
private java.util.LinkedList |
dirtyBuffers |
private java.util.LinkedList |
freeBuffers |
private java.lang.Object |
listLatch |
private MasterFactory |
mf |
private byte[] |
outBufferData |
private long |
outBufferLastInstant |
private int |
outBufferStored |
private java.lang.Object |
outputLatch |
private boolean |
validOutBuffer |
| Constructor and Description |
|---|
ReplicationLogBuffer(int bufferSize,
MasterFactory mf)
Class constructor specifies the number of buffer elements
and the master controller that creates this replication log
buffer.
|
| Modifier and Type | Method and Description |
|---|---|
void |
appendLog(long greatestInstant,
byte[] log,
int logOffset,
int logLength)
Append a chunk of log records to the log buffer.
|
byte[] |
getData()
Returns a byte[] containing a chunk of serialized log records.
|
int |
getFillInformation()
Used to calculate the Fill Information.
|
long |
getLastInstant()
Can be used so that only the necessary log records are sent
when a flush(LogInstant flush_to_this) is called in the log
factory.
|
int |
getSize() |
boolean |
next()
Sets the output data to that of the next (oldest) buffer
element in dirtyBuffers so that getData(), getLastInstant() and
getSize() return values from the next oldest chunk of log.
|
private void |
switchDirtyBuffer()
Appends the currentDirtyBuffer to dirtyBuffers, and makes a
fresh buffer element from freeBuffers the currentDirtyBuffer.
|
boolean |
validData()
Method to determine whether or not the buffer had any log records
the last time next() was called.
|
public static final int DEFAULT_NUMBER_LOG_BUFFERS
private final java.util.LinkedList dirtyBuffers
private final java.util.LinkedList freeBuffers
private LogBufferElement currentDirtyBuffer
private boolean validOutBuffer
private byte[] outBufferData
private int outBufferStored
private long outBufferLastInstant
private final java.lang.Object listLatch
private final java.lang.Object outputLatch
private int defaultBufferSize
private final MasterFactory mf
public ReplicationLogBuffer(int bufferSize,
MasterFactory mf)
bufferSize - the default number of buffer elementsmf - Used to notify the master controller that a log buffer
element is full and work needs to be done.public void appendLog(long greatestInstant,
byte[] log,
int logOffset,
int logLength)
throws LogBufferFullException
greatestInstant - the instant of the log record that was
added last to this chunk of loglog - the chunk of log recordslogOffset - offset in log to start copy fromlogLength - number of bytes to copy, starting
from logOffsetLogBufferFullException - - thrown if there is not enough
free space in the buffer to store the chunk of log.public boolean next()
public byte[] getData()
throws java.util.NoSuchElementException
java.util.NoSuchElementException - if there was no log in the
buffer the last time next() was called.public boolean validData()
public int getSize()
throws java.util.NoSuchElementException
java.util.NoSuchElementException - if there was no log in the
buffer the last time next() was called.public long getLastInstant()
throws java.util.NoSuchElementException
java.util.NoSuchElementException - if there was no log in the
buffer the last time next() was called.private void switchDirtyBuffer()
throws LogBufferFullException
LogBufferFullException - if the freeBuffers list is emptypublic int getFillInformation()
Apache Derby V10.10 Internals - Copyright © 2004,2014 The Apache Software Foundation. All Rights Reserved.