- java.lang.Object
-
- org.refcodes.io.AbstractBytesDestination
-
- org.refcodes.io.AbstractBytesReceiver
-
- org.refcodes.io.AbstractPrefetchInputStreamByteReceiver
-
- 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,Availability,ByteDestination,ByteReceiver,BytesDestination,BytesReceiver,Receivable,Skippable,TimeoutInputStreamAccessor,org.refcodes.mixin.InputStreamAccessor,org.refcodes.mixin.Loggable
- Direct Known Subclasses:
PrefetchBidirectionalStreamConnectionByteTransceiver,PrefetchInputStreamConnectionByteReceiver
public abstract class AbstractPrefetchInputStreamByteReceiver extends AbstractBytesReceiver implements org.refcodes.mixin.Loggable
Abstract implementation of theBytesReceiverinterface. 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 theAbstractBytesReceiver.receiveByte()(AbstractBytesReceiver.receiveAllBytes()) by them methods popping the datagrams from the datagram queue. If the queue is empty, then theAbstractBytesReceiver.receiveByte()(AbstractBytesReceiver.receiveAllBytes()) method is blocked until the daemon thread places new datagrams into the queue.- See Also:
AbstractBytesReceiver
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.refcodes.io.AbstractBytesReceiver
AbstractBytesReceiver.ConnectableAutomaton
-
Nested classes/interfaces inherited from interface org.refcodes.io.BytesReceiver
BytesReceiver.ReceiverInputStream
-
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.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
-
Nested classes/interfaces inherited from interface org.refcodes.mixin.InputStreamAccessor
org.refcodes.mixin.InputStreamAccessor.InputStreamBuilder<B extends org.refcodes.mixin.InputStreamAccessor.InputStreamBuilder<?>>, org.refcodes.mixin.InputStreamAccessor.InputStreamMutator, org.refcodes.mixin.InputStreamAccessor.InputStreamProperty
-
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
-
Nested classes/interfaces inherited from interface org.refcodes.io.TimeoutInputStreamAccessor
TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<B extends TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<?>>, TimeoutInputStreamAccessor.TimeoutInputStreamMutator, TimeoutInputStreamAccessor.TimeoutInputStreamProperty
-
-
Field Summary
-
Fields inherited from class org.refcodes.io.AbstractBytesReceiver
_automaton
-
Fields inherited from class org.refcodes.io.AbstractBytesDestination
_datagramQueue, DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description AbstractPrefetchInputStreamByteReceiver()Creates anAbstractPrefetchInputStreamByteReceiver.AbstractPrefetchInputStreamByteReceiver(int aQueueCapacity)Creates anAbstractPrefetchInputStreamByteReceiverusing the given datagram queue capacity.AbstractPrefetchInputStreamByteReceiver(int aQueueCapacity, ExecutorService aExecutorService)Creates anAbstractPrefetchInputStreamByteReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.AbstractPrefetchInputStreamByteReceiver(ExecutorService aExecutorService)Creates anAbstractPrefetchInputStreamByteReceiverusing 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(InputStream aInputStream)Checks if is openable.protected voidopen(InputStream aInputStream)Open, see alsoConnectionOpenable.open(Object).-
Methods inherited from class org.refcodes.io.AbstractBytesReceiver
available, getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, receiveAllBytes, receiveByte, receiveBytes, setConnectionStatus
-
Methods inherited from class org.refcodes.io.AbstractBytesDestination
pushDatagram, pushDatagrams, pushDatagrams
-
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.Availability
hasAvailable
-
Methods inherited from interface org.refcodes.io.BytesDestination
receiveBytes
-
Methods inherited from interface org.refcodes.io.BytesReceiver
getInputStream, getInputStream, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skip
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
-
Methods inherited from interface org.refcodes.io.Skippable
skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin
-
-
-
-
Constructor Detail
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver()
Creates anAbstractPrefetchInputStreamByteReceiver.
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver(ExecutorService aExecutorService)
Creates anAbstractPrefetchInputStreamByteReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.- Parameters:
aExecutorService- TheExecutorServiceto be used, when null then anExecutorServicesomething lineExecutors.newCachedThreadPool()is then retrieved.
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver(int aQueueCapacity)
Creates anAbstractPrefetchInputStreamByteReceiverusing the given datagram queue capacity.- Parameters:
aQueueCapacity- The capacity of the prefetch queue before it blocks until data is read viaAbstractBytesReceiver.receiveByte()(AbstractBytesReceiver.receiveAllBytes()).
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver(int aQueueCapacity, ExecutorService aExecutorService)Creates anAbstractPrefetchInputStreamByteReceiverusing the givenExecutorServicerequired for thread generation in an JEE environment.- Parameters:
aQueueCapacity- The capacity of the prefetch queue before it blocks until data is read viaAbstractBytesReceiver.receiveByte()(AbstractBytesReceiver.receiveAllBytes()).aExecutorService- TheExecutorServiceto be used, when null then anExecutorServicesomething lineExecutors.newCachedThreadPool()is then retrieved.
-
-
Method Detail
-
close
public void close() throws IOException- Specified by:
closein interfaceorg.refcodes.component.Closable- Overrides:
closein classAbstractBytesReceiver- Throws:
IOException
-
open
protected void open(InputStream aInputStream) throws IOException
Open, see alsoConnectionOpenable.open(Object).- Parameters:
aInputStream- the input stream- Throws:
IOException- the open exception
-
isOpenable
protected boolean isOpenable(InputStream aInputStream)
Checks if is openable. See alsoConnectionOpenable.ConnectionOpenAutomaton.isOpenable(Object).- Parameters:
aInputStream- the input stream- Returns:
- true, if is openable
-
-