|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectgr.uoa.di.madgik.grs.reader.RandomReader<T>
T
- The type of Record
specialization that is to be returned by the get
operationspublic class RandomReader<T extends Record>
The RandomReader
class provides access over an authored IBuffer
in a random access fashion. The Record
s
retrieved can be defined to be cast to the specific Record
extending class. The random way of record access is enabled
through the use of a IRecordStore
that persists all the records that are retrieved in the forward fashion. This way
whenever a previous record than the current forward record, it is retrieved by the record store. The deserialization from the
record store is not performed on a per record only fashion, but a window can be defined that will include a number of pre-stored
records
Field Summary | |
---|---|
static int |
DefaultIteratorTimeout
The default timeout to be used by the RandomReaderIterator s initialized by this reader when retrieving
records or checking if more records are available. |
static java.util.concurrent.TimeUnit |
DefaultIteratorTimeUnit
The default time unit to be used by the RandomReaderIterator s initialized by this reader when retrieving
records or checking if more records are available. |
static int |
DefaultWindowSize
The default size of the window used to resume records that are already in the IRecordStore and need to be
made available in memory. |
Constructor Summary | |
---|---|
RandomReader(java.net.URI locator)
Creates a new reader accessing the IBuffer referenced by the provided locator |
|
RandomReader(java.net.URI locator,
int capacity)
Creates a new reader accessing the IBuffer referenced by the provided locator
The IBuffer will have the specified capacity, if possible |
Method Summary | |
---|---|
int |
availableRecords()
The number of readily available for consumption Record s |
void |
close()
Closes and disposes the underlying buffer. |
long |
currentRecord()
The index of the last Record retrieved through the reader. |
void |
emit(BufferEvent event)
Emits the provided event to the writer. |
T |
get()
Retrieves the next available Record from the IBuffer . |
T |
get(long timeout,
java.util.concurrent.TimeUnit unit)
Retrieves the next available Record from the IBuffer . |
int |
getCapacity()
The underlying IBuffer capacity used. |
int |
getConcurrentPartialCapacity()
The underlying IBuffer concurrent partial capacity used |
long |
getInactivityTimeout()
Retrieves the Inactivity timeout set for the lifecycle management of the underlying IBuffer . |
java.util.concurrent.TimeUnit |
getInactivityTimeUnit()
Retrieves the Inactivity time unit set for the lifecycle management of the underlying IBuffer . |
long |
getIteratorTimeout()
The timeout that is used by the Iterator s that are created by this reader. |
java.util.concurrent.TimeUnit |
getIteratorTimeUnit()
The time unit that is used by the Iterator s that are created by this reader. |
RecordDefinition[] |
getRecordDefinitions()
Retrieves the RecordDefinition s that define the Record s that are accessible through the reader |
IBuffer.Status |
getStatus()
Retrieves the status of the underlying IBuffer . |
int |
getWindowSize()
Retrieves the window size that will be used whenever a pre-read record is requested. |
java.util.Iterator<T> |
iterator()
|
java.util.ListIterator<T> |
listIterator()
The iterator returned is an instance of RandomReaderIterator |
BufferEvent |
receive()
Receives a previously emitted event from a writer. |
long |
seek(long len)
Seeks the number of Record s provided in the list of Record s available. |
void |
setIteratorTimeout(long iteratorTimeout)
The timeout that should be used by the Iterator s that are created by this reader. |
void |
setIteratorTimeUnit(java.util.concurrent.TimeUnit iteratorTimeUnit)
The time unit that should be used by the Iterator s that are created by this reader. |
void |
setWindowSize(int windowSize)
Sets the window size that will be used whenever a pre-read record is requested. |
long |
totalRecords()
The number of total Record s that have passed through the IBuffer this far. |
boolean |
waitAvailable(long timeout,
java.util.concurrent.TimeUnit unit)
Makes sure that within the provided time frame, there is a Record that can be retrieved without blocking. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DefaultIteratorTimeout
RandomReaderIterator
s initialized by this reader when retrieving
records or checking if more records are available. This value should be interpreted in conjunction with the
value of DefaultIteratorTimeUnit
public static final java.util.concurrent.TimeUnit DefaultIteratorTimeUnit
RandomReaderIterator
s initialized by this reader when retrieving
records or checking if more records are available. This value should be interpreted in conjunction with the
value of DefaultIteratorTimeout
public static final int DefaultWindowSize
IRecordStore
and need to be
made available in memory. Currently set to 1
Constructor Detail |
---|
public RandomReader(java.net.URI locator) throws GRS2ReaderException
IBuffer
referenced by the provided locator
locator
- the locator identifying the IBuffer
to consume
GRS2ReaderException
- the operation could not be completedpublic RandomReader(java.net.URI locator, int capacity) throws GRS2ReaderException
IBuffer
referenced by the provided locator
The IBuffer
will have the specified capacity, if possible
locator
- the locator identifying the IBuffer
to consumecapacity
- a desired capacity for the IBuffer
which will be consumed. Used as
a hint to the underlying IReaderProxy
, which might or might not honor it depending
on its strategy
GRS2ReaderException
- the operation could not be completedMethod Detail |
---|
public RecordDefinition[] getRecordDefinitions() throws GRS2ReaderException
RecordDefinition
s that define the Record
s that are accessible through the reader
getRecordDefinitions
in interface IRecordReader<T extends Record>
RecordDefinition
s as were provided by the corresponding writer
GRS2ReaderException
- the operation could not be completedIBuffer.getRecordDefinitions()
public long getInactivityTimeout() throws GRS2ReaderException
IBuffer
. This value
should be interpreted in conjunction with the value of IRecordReader.getInactivityTimeUnit()
.
getInactivityTimeout
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordReader#getInactivityTimeout()}
public java.util.concurrent.TimeUnit getInactivityTimeUnit() throws GRS2ReaderException
IBuffer
. This value
should be interpreted in conjunction with the value of IRecordReader.getInactivityTimeout()
getInactivityTimeUnit
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordReader#getInactivityTimeUnit()}
public void setWindowSize(int windowSize)
IRecordStore
and made available
windowSize
- the size of the windowpublic int getWindowSize()
IRecordStore
and made available
public void setIteratorTimeout(long iteratorTimeout)
Iterator
s that are created by this reader. This value
is interpreted in conjunction with the value of IRecordReader.getIteratorTimeUnit()
The Iterator
s which will use the timeout are instances of RandomReaderIterator
.
setIteratorTimeout
in interface IRecordReader<T extends Record>
iteratorTimeout
- the timeoutIRecordReader#setIteratorTimeout(long)}
public long getIteratorTimeout()
Iterator
s that are created by this reader. This value
is interpreted in conjunction with the value of IRecordReader.getIteratorTimeUnit()
.
The Iterator
s which use the timeout are instances of RandomReaderIterator
.
getIteratorTimeout
in interface IRecordReader<T extends Record>
IRecordReader#getIteratorTimeout()}
public void setIteratorTimeUnit(java.util.concurrent.TimeUnit iteratorTimeUnit)
Iterator
s that are created by this reader. This value
is interpreted in conjunction with the value of IRecordReader.getIteratorTimeout()
The Iterator
s which will use the time unit are instances of RandomReaderIterator
.
setIteratorTimeUnit
in interface IRecordReader<T extends Record>
iteratorTimeUnit
- the time unitIRecordReader#setIteratorTimeUnit(TimeUnit)}
public java.util.concurrent.TimeUnit getIteratorTimeUnit()
Iterator
s that are created by this reader. This value
is interpreted in conjunction with the value of IRecordReader.getIteratorTimeout()
The Iterator
s which use the time unit are instances of RandomReaderIterator
.
getIteratorTimeUnit
in interface IRecordReader<T extends Record>
IRecordReader#getIteratorTimeUnit()}
public int getCapacity() throws GRS2ReaderException
IBuffer
capacity used.
getCapacity
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordReader#getCapacity()}
public int getConcurrentPartialCapacity() throws GRS2ReaderException
IBuffer
concurrent partial capacity used
getConcurrentPartialCapacity
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordReader#getConcurrentPartialCapacity()}
public IBuffer.Status getStatus()
IBuffer
.
getStatus
in interface IRecordReader<T extends Record>
IRecordReader#getStatus()}
public void close() throws GRS2ReaderException
close
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordStore.dispose()
,
IRecordReader#close()}
public long totalRecords() throws GRS2ReaderException
Record
s that have passed through the IBuffer
this far.
totalRecords
in interface IRecordReader<T extends Record>
Record
s that have passed through the IBuffer
this far
GRS2ReaderException
- the operation could not be completedIRecordReader#totalRecords()}
public long currentRecord() throws GRS2ReaderException
Record
retrieved through the reader.
currentRecord
in interface IRecordReader<T extends Record>
Record
retrieved through the reader
GRS2ReaderException
- the operation could not be completed because no records were retrieved yetIRecordReader#currentRecord()}
public int availableRecords() throws GRS2ReaderException
Record
s
availableRecords
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIBuffer.availableRecords()
public T get() throws GRS2ReaderException
Record
from the IBuffer
. An explicit cast is performed to the
type provided in the generic declaration of the reader. If the request can be served by the IRecordStore
then only the local store is touched and not the IBuffer
get
in interface IRecordReader<T extends Record>
Record
or null if none was readily available
GRS2ReaderException
- the operation could not be completedIBuffer.get()
public T get(long timeout, java.util.concurrent.TimeUnit unit) throws GRS2ReaderException
Record
from the IBuffer
. An explicit cast is performed to the
type provided in the generic declaration of the reader. If no record is readily available the reader will
block for a maximum of timeout
unit
units of time waiting for a record to become
available or until the IBuffer
uses the IBuffer.getReaderImmediateNotificationObject()
to notify blocked readers.
If the request can be served by the IRecordStore
then only the local store is touched and not the IBuffer
get
in interface IRecordReader<T extends Record>
timeout
- the timeout to wait forunit
- the unit of time to use to interpret the timeout value
Record
retrieved, or null if the timeout expired without a Record
becoming available
GRS2ReaderException
- the operation could not be completedIBuffer.get()
public long seek(long len) throws GRS2ReaderException
Record
s provided in the list of Record
s available.
Depending on the actual IRecordReader
implementation, forward and/or backward seeks may be supported.
Seeks the number of Record
s provided forward or backward in the list of Record
s available depending on
whether the provided length is a positive or negative number. If the seek length is larger than the readily available
Record
s, then the timeout and time unit available through ForwardReader.getIteratorTimeout()
and
ForwardReader.getIteratorTimeUnit()
. If the seek can be completely served by the local IRecordStore
then
the IBuffer
is not used.
seek
in interface IRecordReader<T extends Record>
len
- the number of Record
}s to skip
Record
s actually skipped
GRS2ReaderException
- the operation could not be completedpublic java.util.Iterator<T> iterator()
The iterator returned is an instance of RandomReaderIterator
iterator
in interface IRecordReader<T extends Record>
iterator
in interface java.lang.Iterable<T extends Record>
Iterable.iterator()
public java.util.ListIterator<T> listIterator()
RandomReaderIterator
public void emit(BufferEvent event) throws GRS2ReaderException, GRS2ReaderInvalidArgumentException
BufferEvent.EventSource.Reader
.
emit
in interface IRecordReader<T extends Record>
event
- the event to send to the writer
GRS2ReaderException
- the operation could not be completed
GRS2ReaderInvalidArgumentException
- the event provided cannot be nullIRecordReader.emit(BufferEvent)
public BufferEvent receive() throws GRS2ReaderException
receive
in interface IRecordReader<T extends Record>
GRS2ReaderException
- the operation could not be completedIRecordReader.receive()
public boolean waitAvailable(long timeout, java.util.concurrent.TimeUnit unit) throws GRS2ReaderException
Record
that can be retrieved without blocking.
If the timeout defined expires and no Record
has been made available, false is returned. Otherwise, or if
there are already available Record
s, true is returned.
If the request can be served by the local IRecordStore
then the IBuffer
is not used
waitAvailable
in interface IRecordReader<T extends Record>
timeout
- the timeout value interpreted in conjunction with the unit valueunit
- the time unit to use to interpret the timeout value
Record
available before the timeout has expired, false otherwise
GRS2ReaderException
- the operation could not be completedIRecordReader#waitAvailable(long, TimeUnit)}
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |