Class AbstractPrefetchInputStreamByteReceiver
java.lang.Object
org.refcodes.component.AbstractConnectable
org.refcodes.io.AbstractBytesDestination
org.refcodes.io.AbstractBytesReceiver
org.refcodes.io.AbstractPrefetchInputStreamByteReceiver
- All Implemented Interfaces:
Closable, Closable.CloseAutomaton, ClosedAccessor, ConnectableComponent, ConnectableComponent.ConnectableAutomaton, ConnectionStatusAccessor, OpenedAccessor, Availability, ByteDestination, ByteReceiver, BytesDestination, BytesReceiver, Receivable, Skippable, TimeoutInputStreamAccessor, InputStreamAccessor
- Direct Known Subclasses:
PrefetchBidirectionalStreamConnectionByteTransceiver, PrefetchInputStreamConnectionByteReceiver
Abstract implementation of the
BytesReceiver interface. As of the
prefetching functionality, a separate daemon thread (retrieved via an
ExecutorService) reads from the provided InputStream and
places the datagrams into a datagram queue until the datagram queue's
capacity is reached. Datagrams are read by the AbstractBytesReceiver.receiveByte()
(AbstractBytesReceiver.receiveAllBytes()) by them methods popping the datagrams from the
datagram queue. If the queue is empty, then the AbstractBytesReceiver.receiveByte() (
AbstractBytesReceiver.receiveAllBytes()) method is blocked until the daemon thread places
new datagrams into the queue.- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractBytesReceiver
AbstractBytesReceiver.ConnectableAutomatonNested classes/interfaces inherited from interface BytesReceiver
BytesReceiver.ReceiverInputStreamNested classes/interfaces inherited from interface Closable
Closable.CloseAutomaton, Closable.CloseBuilder<B>Nested classes/interfaces inherited from interface ClosedAccessor
ClosedAccessor.ClosedMutator, ClosedAccessor.ClosedPropertyNested classes/interfaces inherited from interface ConnectionStatusAccessor
ConnectionStatusAccessor.ConnectionStatusMutator, ConnectionStatusAccessor.ConnectionStatusPropertyNested classes/interfaces inherited from interface InputStreamAccessor
InputStreamAccessor.InputStreamBuilder<B>, InputStreamAccessor.InputStreamMutator, InputStreamAccessor.InputStreamPropertyNested classes/interfaces inherited from interface OpenedAccessor
OpenedAccessor.OpenedMutator, OpenedAccessor.OpenedPropertyNested classes/interfaces inherited from interface TimeoutInputStreamAccessor
TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<B>, TimeoutInputStreamAccessor.TimeoutInputStreamMutator, TimeoutInputStreamAccessor.TimeoutInputStreamProperty -
Field Summary
Fields inherited from class AbstractBytesReceiver
_automatonFields inherited from class AbstractBytesDestination
_datagramQueue, DATAGRAM_QUEUE_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionCreates 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
Modifier and TypeMethodDescriptionvoidclose()protected booleanisOpenable(InputStream aInputStream) Checks if is openable.protected voidopen(InputStream aInputStream) Open, see alsoConnectionOpenable.open(Object).Methods inherited from class AbstractBytesReceiver
available, getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, receiveAllBytes, receiveByte, receiveBytes, setConnectionStatusMethods inherited from class AbstractBytesDestination
pushDatagram, pushDatagrams, pushDatagramsMethods inherited from class AbstractConnectable
isThrownAsOfAlreadyClosedMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Availability
hasAvailableMethods inherited from interface BytesDestination
receiveBytesMethods inherited from interface BytesReceiver
getInputStream, getInputStream, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skipMethods inherited from interface Closable
closeIn, closeQuietly, closeUncheckedMethods inherited from interface Skippable
skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin, skipAvailableWithin
-
Constructor Details
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver()Creates anAbstractPrefetchInputStreamByteReceiver. -
AbstractPrefetchInputStreamByteReceiver
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 Details
-
close
- Specified by:
closein interfaceClosable- Overrides:
closein classAbstractBytesReceiver- Throws:
IOException
-
open
Open, see alsoConnectionOpenable.open(Object).- Parameters:
aInputStream- the input stream- Throws:
IOException- the open exception
-
isOpenable
Checks if is openable. See alsoConnectionOpenable.ConnectionOpenAutomaton.isOpenable(Object).- Parameters:
aInputStream- the input stream- Returns:
- true, if is openable
-