Skip navigation links

Oracle® Fusion Middleware Java API Reference for Oracle Coherence
12c (12.1.3.0.0)

E47890-01


com.tangosol.io.journal
Class FlashJournalRM.JournalFile

java.lang.Object
  extended by com.tangosol.io.journal.AbstractJournalRM.JournalFile
      extended by com.tangosol.io.journal.FlashJournalRM.JournalFile

All Implemented Interfaces:
com.oracle.common.base.Disposable
Enclosing class:
FlashJournalRM

protected class FlashJournalRM.JournalFile
extends AbstractJournalRM.JournalFile

A JournalFile is created for each OS file used to store the journal contents. It is created in an initial "append" mode -- which may be interrupted from time to time by a "congested" mode if writes are falling too far behind, it then transitions to a "full" mode, and once enough of its storage has been released it transitions to an "evacuating" mode, which (once evacuated) becomes "garbage" and (upon deletion) is "discarded".


Field Summary
protected  byte[] m_abOv
          Random overlay data.
protected  java.nio.channels.FileChannel m_channelRead
          A random access FileChannel for read purposes.
protected  java.nio.channels.FileChannel m_channelWrite
          A FileOutputStream FileChannel for append purposes.
protected  java.io.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).

 

Fields inherited from class com.tangosol.io.journal.AbstractJournalRM.JournalFile
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 Summary
FlashJournalRM.JournalFile(int nFile)
          Construct a Journal File.

 

Method Summary
 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()
          
 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  java.lang.String getDescription()
          Format the object attributes into a String for inclusion in the String returned from the AbstractJournalRM.JournalFile.toString() method.
 java.io.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.
 java.nio.channels.FileChannel getReadChannel()
          Obtain the FileChannel used for reading from the JournalFile.
 java.nio.channels.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.

 

Methods inherited from class com.tangosol.io.journal.AbstractJournalRM.JournalFile
compareAndSetOffset, compareAndSetState, evacuate, getBytesWritten, getFileId, getOffset, getOffset, getReleased, getState, getState, isAppending, isReserved, notifyWriteCompleted, setNextJournalFile, setReserved, setState, toString

 

Field Detail

m_file

protected final java.io.File m_file
The file. Immutable field.

m_channelRead

protected java.nio.channels.FileChannel m_channelRead
A random access FileChannel for read purposes.

m_channelWrite

protected final java.nio.channels.FileChannel m_channelWrite
A FileOutputStream FileChannel for append purposes.

m_abOv

protected final byte[] m_abOv
Random overlay data.

m_ofNextFlush

protected long m_ofNextFlush
The offset of the next Binary to clean out of the map (ie "flush" out of memory).

Constructor Detail

FlashJournalRM.JournalFile

public FlashJournalRM.JournalFile(int nFile)
Construct a Journal File.
Parameters:
nFile - the file number in the range 0-511 (inclusive)

Method Detail

enqueue

public 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.
Specified by:
enqueue in class AbstractJournalRM.JournalFile
Parameters:
bin - the value to append to the journal file
Returns:
a ticket if the Binary has successfully been enqueued, or 0L if the file is full

read

public Binary read(long lTicket)
Read the Binary associated with the specified ticket from the journal file.
Specified by:
read in class AbstractJournalRM.JournalFile
Parameters:
lTicket - a ticket previously returned from AbstractJournalRM.JournalFile.enqueue(com.tangosol.util.Binary)
Returns:
the Binary value that is associated with the ticket

release

public void release(int cbValue)
Release the specified number of bytes from this journal file.
Overrides:
release in class AbstractJournalRM.JournalFile
Parameters:
cbValue - the number of bytes that are being released

getNextJournalFile

public FlashJournalRM.JournalFile getNextJournalFile()
Determine the JournalFile for the file in the journal that follows the file represented by this JournalFile.
Overrides:
getNextJournalFile in class AbstractJournalRM.JournalFile
Returns:
the next file in the journal, or null if it has not yet been set

getFile

public java.io.File getFile()
Obtain the File that this JournalFile object represents.
Returns:
a File object representing the OS file that this JournalFile writes and reads to and from

getReadChannel

public java.nio.channels.FileChannel getReadChannel()
Obtain the FileChannel used for reading from the JournalFile.
Returns:
a random access FileChannel

getWriteChannel

public java.nio.channels.FileChannel getWriteChannel()
Obtain the FileChannel used for appending to the JournalFile.
Returns:
an appending FileChannel

touch

public void touch()
This method is called periodically by the collector daemon to indicate that the file is still being used.
Overrides:
touch in class AbstractJournalRM.JournalFile

getDescription

protected java.lang.String getDescription()
Format the object attributes into a String for inclusion in the String returned from the AbstractJournalRM.JournalFile.toString() method.
Overrides:
getDescription in class AbstractJournalRM.JournalFile
Returns:
a comma-delimited String listing the attributes of this object in the form "attribute=value"

notifyWriteOccurred

public void notifyWriteOccurred(int cbWritten)
Called by the WriterDaemon to indicate that more data has been flushed from the write-behind queue to disk.
Parameters:
cbWritten - the number of additional bytes written

notifyWriteBehindCompleted

public void notifyWriteBehindCompleted()
Called by the WriterDaemon to indicate that all the data for the JournalFile has been flushed.

dispose

public void dispose()
Specified by:
dispose in interface com.oracle.common.base.Disposable
Specified by:
dispose in class AbstractJournalRM.JournalFile

congestionCheck

protected void congestionCheck(int cbDelta)
Check if a change to the backlog causes a change to the congestion state.
Parameters:
cbDelta - number of bytes added to or removed from the backlog

allocateBuffer

public FlashJournalRM.Buffer allocateBuffer()
Allocate a Buffer to use with this JournalFile.
Returns:
a new (or pooled) Buffer

Skip navigation links

Oracle® Fusion Middleware Java API Reference for Oracle Coherence
12c (12.1.3.0.0)

E47890-01


Copyright © 2000, 2014, Oracle and/or its affiliates. All rights reserved.