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 theReceiverinterface. As of the prefetching functionality, a separate daemon thread (retrieved via anExecutorService) reads from the providedInputStreamand 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 anAbstractPrefetchInputStreamReceiverusing the given datagram queue capacity.AbstractPrefetchInputStreamReceiver(int aQueueCapacity, java.util.concurrent.ExecutorService aExecutorService)Creates anAbstractPrefetchInputStreamReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.AbstractPrefetchInputStreamReceiver(java.util.concurrent.ExecutorService aExecutorService)Creates anAbstractPrefetchInputStreamReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()protected booleanisOpenable(java.io.InputStream aInputStream)Checks if is openable.protected voidopen(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 anAbstractPrefetchInputStreamReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.- Parameters:
aExecutorService- TheExecutorServiceto be used, when null then anExecutorServicesomething lineExecutors.newCachedThreadPool()is then retrieved.
-
AbstractPrefetchInputStreamReceiver
public AbstractPrefetchInputStreamReceiver(int aQueueCapacity)
Creates anAbstractPrefetchInputStreamReceiverusing 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 anAbstractPrefetchInputStreamReceiverusing the givenExecutorServicerequired 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- TheExecutorServiceto be used, when null then anExecutorServicesomething lineExecutors.newCachedThreadPool()is then retrieved.
-
-
Method Detail
-
close
public void close() throws org.refcodes.component.CloseException- Specified by:
closein interfaceorg.refcodes.component.Closable- Overrides:
closein classAbstractReceiver<DATA extends java.io.Serializable>- Throws:
org.refcodes.component.CloseException
-
open
protected void open(java.io.InputStream aInputStream) throws org.refcodes.component.OpenExceptionOpen, 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
-
-