Package org.refcodes.io
Class AbstractPrefetchInputStreamReceiver<DATA extends java.io.Serializable>
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractReceiver<DATA>
-
- org.refcodes.io.AbstractPrefetchInputStreamReceiver<DATA>
-
- Type Parameters:
DATA
- The type of the datagram to be operated with.
- All Implemented Interfaces:
org.refcodes.component.Closable
,org.refcodes.component.Closable.CloseAutomaton
,org.refcodes.component.ClosedAccessor
,org.refcodes.component.ConnectableComponent
,org.refcodes.component.ConnectableComponent.ConnectableAutomaton
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.OpenedAccessor
,BlockProvider<DATA>
,BlockReceiver<DATA>
,DatagramProvider<DATA>
,DatagramReceiver<DATA>
,Provider<DATA>
,Receivable
,Receiver<DATA>
,org.refcodes.mixin.Loggable
,org.refcodes.mixin.Releaseable
- Direct Known Subclasses:
PrefetchBidirectionalStreamConnectionTransceiverImpl
,PrefetchInputStreamConnectionReceiverImpl
public abstract class AbstractPrefetchInputStreamReceiver<DATA extends java.io.Serializable> extends AbstractReceiver<DATA> implements org.refcodes.mixin.Loggable
Abstract implementation of theReceiver
interface. As of the prefetching functionality, a separate daemon thread (retrieved via anExecutorService
) reads from the providedInputStream
and places the datagrams into a datagram queue until the datagram queue's capacity is reached. Datagrams are read by theAbstractReceiver.readDatagram()
(AbstractReceiver.readDatagrams()
) by them methods popping the datagrams from the datagram queue. If the queue is empty, then theAbstractReceiver.readDatagram()
(AbstractReceiver.readDatagrams()
) method is blocked until the daemon thread places new datagrams into the queue. See alsoAbstractReceiver
.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
-
Nested classes/interfaces inherited from interface org.refcodes.component.ClosedAccessor
org.refcodes.component.ClosedAccessor.ClosedMutator, org.refcodes.component.ClosedAccessor.ClosedProperty
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectableComponent
org.refcodes.component.ConnectableComponent.ConnectableAutomaton
-
-
Field Summary
-
Fields inherited from class org.refcodes.io.AbstractReceiver
DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description AbstractPrefetchInputStreamReceiver()
Creates anAbstractPrefetchInputStreamReceiver
.AbstractPrefetchInputStreamReceiver(int aQueueCapacity)
Creates anAbstractPrefetchInputStreamReceiver
using the given datagram queue capacity.AbstractPrefetchInputStreamReceiver(int aQueueCapacity, java.util.concurrent.ExecutorService aExecutorService)
Creates anAbstractPrefetchInputStreamReceiver
using the givenExecutorService
required for thread generation in an JEE environment.AbstractPrefetchInputStreamReceiver(java.util.concurrent.ExecutorService aExecutorService)
Creates anAbstractPrefetchInputStreamReceiver
using the givenExecutorService
required for thread generation in an JEE environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
protected boolean
isOpenable(java.io.InputStream aInputStream)
Checks if is openable.protected void
open(java.io.InputStream aInputStream)
Open, see alsoConnectionOpenable.open(Object)
.-
Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
-
Methods inherited from class org.refcodes.io.AbstractReceiver
hasDatagram, pushDatagram, pushDatagrams, pushDatagrams, readDatagram, readDatagrams, releaseAll
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isConnectionOpened
-
Methods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.refcodes.io.Receiver
readDatagrams
-
-
-
-
Constructor Detail
-
AbstractPrefetchInputStreamReceiver
public AbstractPrefetchInputStreamReceiver()
Creates anAbstractPrefetchInputStreamReceiver
.
-
AbstractPrefetchInputStreamReceiver
public AbstractPrefetchInputStreamReceiver(java.util.concurrent.ExecutorService aExecutorService)
Creates anAbstractPrefetchInputStreamReceiver
using the givenExecutorService
required for thread generation in an JEE environment.- Parameters:
aExecutorService
- TheExecutorService
to be used, when null then anExecutorService
something lineExecutors.newCachedThreadPool()
is then retrieved.
-
AbstractPrefetchInputStreamReceiver
public AbstractPrefetchInputStreamReceiver(int aQueueCapacity)
Creates anAbstractPrefetchInputStreamReceiver
using the given datagram queue capacity.- Parameters:
aQueueCapacity
- The capacity of the prefetch queue before it blocks until data is read viaAbstractReceiver.readDatagram()
(AbstractReceiver.readDatagrams()
).
-
AbstractPrefetchInputStreamReceiver
public AbstractPrefetchInputStreamReceiver(int aQueueCapacity, java.util.concurrent.ExecutorService aExecutorService)
Creates anAbstractPrefetchInputStreamReceiver
using the givenExecutorService
required for thread generation in an JEE environment.- Parameters:
aQueueCapacity
- The capacity of the prefetch queue before it blocks until data is read viaAbstractReceiver.readDatagram()
(AbstractReceiver.readDatagrams()
).aExecutorService
- TheExecutorService
to be used, when null then anExecutorService
something lineExecutors.newCachedThreadPool()
is then retrieved.
-
-
Method Detail
-
close
public void close() throws org.refcodes.component.CloseException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractReceiver<DATA extends java.io.Serializable>
- Throws:
org.refcodes.component.CloseException
-
open
protected void open(java.io.InputStream aInputStream) throws org.refcodes.component.OpenException
Open, see alsoConnectionOpenable.open(Object)
.- Parameters:
aInputStream
- the input stream- Throws:
org.refcodes.component.OpenException
- the open exception
-
isOpenable
protected boolean isOpenable(java.io.InputStream aInputStream)
Checks if is openable. See alsoConnectionOpenable.ConnectionOpenAutomaton.isOpenable(Object)
.- Parameters:
aInputStream
- the input stream- Returns:
- true, if is openable
-
-