protected class FlashJournalRM.WriterDaemon extends Daemon
Modifier and Type | Class and Description |
---|---|
protected class |
FlashJournalRM.WriterDaemon.FileFullTask
A task that gets queued to perform cleanup on a file (on the WriterDaemon thread) when the file is full (no more writes will occur to the file).
|
protected class |
FlashJournalRM.WriterDaemon.PendingWriteTask
A task that gets queued to perform an asynchronous appending write on the WriterDaemon thread.
|
Daemon.DaemonWorker
Base.LoggingWriter, Base.StackFrame
Modifier and Type | Field and Description |
---|---|
protected long |
m_cMillisMultiBlockWrites
The number of milliseconds total spent writing blocks in groups.
|
protected long |
m_cMillisSingleBlockWrites
The number of milliseconds total spent writing blocks individually.
|
protected long |
m_cMultiBlockWrites
The number of blocks written in groups (as part of a multi-buffer write).
|
protected long |
m_cSingleBlockWrites
The number of blocks written individually.
|
protected boolean |
m_fPreferSingleBlockWrites
Set to true if it becomes apparent that single block writes are preferable.
|
protected BlockingQueue<Runnable> |
m_queue
A Queue of items for this daemon to execute.
|
Constructor and Description |
---|
WriterDaemon()
Construct a WriterDaemon.
|
Modifier and Type | Method and Description |
---|---|
void |
enqueueBuffer(FlashJournalRM.JournalFile jrnlfile, FlashJournalRM.Buffer buf, int cbBuffer)
Notify the writer thread that a buffer needs to be written.
|
int |
getAvgBlockWriteMillis()
Determine the average number of milliseconds to write each block.
|
int |
getAvgMultiBlockWriteMillis()
Determine the average number of milliseconds to write each block using the NIO "scatter/gather" functionality.
|
int |
getAvgSingleBlockWriteMillis()
Determine the average number of milliseconds to write each block using the NIO "single buffer write" functionality.
|
long |
getBlockWriteCount()
Determine the total number of blocks written by this daemon.
|
protected String |
getDescription()
Format the Daemon attributes into a String for inclusion in the String returned from the
Daemon.toString() method. |
long |
getMultiBlockWriteCount()
Determine the number of blocks written by this daemon using the NIO "scatter/gather" functionality.
|
long |
getSingleBlockWriteCount()
Determine the number of blocks written by this daemon using the NIO "single buffer write" functionality.
|
boolean |
isSingleBlockWritePreferred()
Determine if the next write should automatically use the "single buffer write" capability of NIO, instead of attempting to use the NIO scatter/gather capability.
|
void |
notifyFileFull(FlashJournalRM.JournalFile jrnlfile)
Notify the writer thread that a file is done being written to.
|
void |
run()
The daemon's implementation method.
|
protected void |
setGuardPolicy(Guardian guardian, long cTimeoutMillis, float flPctRecover)
Set the Guardian and policy to guard this Daemon with.
|
void |
stop()
Request the daemon to stop.
|
changeState, configureWorker, ensureThreadGroup, finishStarting, finishStopping, getConfiguredName, getConfiguredPriority, getContext, getGuardRegisterAction, getMaxWaitMillis, getState, getThread, getThreadContextClassLoader, getWorker, guardIfNeeded, heartbeat, heartbeat, instantiateWorker, isGuarded, isOnWorkerThread, isRunning, isStopping, recover, setConfiguredName, setConfiguredPriority, setContext, setGuardRegisterAction, setThreadContextClassLoader, shutdown, start, terminate, toStateString, toString
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
protected BlockingQueue<Runnable> m_queue
protected long m_cSingleBlockWrites
protected long m_cMillisSingleBlockWrites
protected long m_cMultiBlockWrites
protected long m_cMillisMultiBlockWrites
protected boolean m_fPreferSingleBlockWrites
public void stop()
Daemon.isStopping()
.public void run()
An example implementation is:
while (!isStopping())
{
// do some processing
// ...
synchronized (this)
{
// wait for notification of more work
wait();
}
}
protected void setGuardPolicy(Guardian guardian, long cTimeoutMillis, float flPctRecover)
setGuardPolicy
in class Daemon
guardian
- the Guardian that will be guarding this DaemoncTimeoutMillis
- the timeout in ms for this Daemon, or 0 for the service guardian timeoutflPctRecover
- the recovery percentage for this Daemonprotected String getDescription()
Daemon.toString()
method.getDescription
in class Daemon
public boolean isSingleBlockWritePreferred()
public long getBlockWriteCount()
public long getSingleBlockWriteCount()
public long getMultiBlockWriteCount()
public int getAvgBlockWriteMillis()
public int getAvgSingleBlockWriteMillis()
public int getAvgMultiBlockWriteMillis()
public void enqueueBuffer(FlashJournalRM.JournalFile jrnlfile, FlashJournalRM.Buffer buf, int cbBuffer)
jrnlfile
- the file to append tobuf
- the buffer to appendcbBuffer
- the number of bytes to append from the bufferpublic void notifyFileFull(FlashJournalRM.JournalFile jrnlfile)
jrnlfile
- the file to append to