protected class FlashJournalRM.JournalFile extends AbstractJournalRM.JournalFile
Modifier and Type | Field and Description |
---|---|
protected byte[] |
m_abOv
Random overlay data.
|
protected FileChannel |
m_channelRead
A random access FileChannel for read purposes.
|
protected FileChannel |
m_channelWrite
A FileOutputStream FileChannel for append purposes.
|
protected File |
m_file
The file.
|
protected long |
m_ofNextFlush
The offset of the next Binary to clean out of the map (ie "flush" out of memory).
|
m_cbReleased, m_cbWritten, m_fNotifiedFull, m_jrnlfileNext, m_lStateOffset, m_nFile, STATE_APPENDING, STATE_CONGESTION, STATE_DISCARDED, STATE_EVACUATING, STATE_FULL, STATE_GARBAGE, STATE_MASK, STATE_RESERVED
Constructor and Description |
---|
JournalFile(int nFile)
Construct a Journal File.
|
Modifier and Type | Method and Description |
---|---|
FlashJournalRM.Buffer |
allocateBuffer()
Allocate a Buffer to use with this JournalFile.
|
protected void |
congestionCheck(int cbDelta)
Check if a change to the backlog causes a change to the congestion state.
|
void |
dispose()
Invoked when all resources owned by the implementer can safely be released.
|
long |
enqueue(Binary bin)
Enqueue a Binary value to be written to this file, returning a ticket, or return 0L if this file is full and the append has to occur to a new file.
|
protected String |
getDescription()
Format the object attributes into a String for inclusion in the String returned from the
AbstractJournalRM.JournalFile.toString() method. |
File |
getFile()
Obtain the File that this JournalFile object represents.
|
FlashJournalRM.JournalFile |
getNextJournalFile()
Determine the JournalFile for the file in the journal that follows the file represented by this JournalFile.
|
FileChannel |
getReadChannel()
Obtain the FileChannel used for reading from the JournalFile.
|
FileChannel |
getWriteChannel()
Obtain the FileChannel used for appending to the JournalFile.
|
void |
notifyWriteBehindCompleted()
Called by the WriterDaemon to indicate that all the data for the JournalFile has been flushed.
|
void |
notifyWriteOccurred(int cbWritten)
Called by the WriterDaemon to indicate that more data has been flushed from the write-behind queue to disk.
|
Binary |
read(long lTicket)
Read the Binary associated with the specified ticket from the journal file.
|
void |
release(int cbValue)
Release the specified number of bytes from this journal file.
|
void |
touch()
This method is called periodically by the collector daemon to indicate that the file is still being used.
|
compareAndSetOffset, compareAndSetState, evacuate, getBytesWritten, getFileId, getOffset, getOffset, getReleased, getState, getState, isAppending, isReserved, notifyWriteCompleted, setNextJournalFile, setReserved, setState, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
close
protected final File m_file
protected FileChannel m_channelRead
protected final FileChannel m_channelWrite
protected final byte[] m_abOv
protected long m_ofNextFlush
public JournalFile(int nFile)
nFile
- the file number in the range 0-511 (inclusive)public long enqueue(Binary bin)
enqueue
in class AbstractJournalRM.JournalFile
bin
- the value to append to the journal filepublic Binary read(long lTicket)
read
in class AbstractJournalRM.JournalFile
lTicket
- a ticket previously returned from AbstractJournalRM.JournalFile.enqueue(com.tangosol.util.Binary)
public void release(int cbValue)
release
in class AbstractJournalRM.JournalFile
cbValue
- the number of bytes that are being releasedpublic FlashJournalRM.JournalFile getNextJournalFile()
getNextJournalFile
in class AbstractJournalRM.JournalFile
public File getFile()
public FileChannel getReadChannel()
public FileChannel getWriteChannel()
public void touch()
touch
in class AbstractJournalRM.JournalFile
protected String getDescription()
AbstractJournalRM.JournalFile.toString()
method.getDescription
in class AbstractJournalRM.JournalFile
public void notifyWriteOccurred(int cbWritten)
cbWritten
- the number of additional bytes writtenpublic void notifyWriteBehindCompleted()
public void dispose()
Once disposed of the object should no longer be considered to be usable.
Note the Disposable interface is compatible with try-with-resources which will automatically invoke this method.
dispose
in interface Disposable
dispose
in class AbstractJournalRM.JournalFile
protected void congestionCheck(int cbDelta)
cbDelta
- number of bytes added to or removed from the backlogpublic FlashJournalRM.Buffer allocateBuffer()