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 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 org.refcodes.io.AbstractBytesReceiver
AbstractBytesReceiver.ConnectableAutomatonNested classes/interfaces inherited from interface org.refcodes.io.BytesReceiver
BytesReceiver.ReceiverInputStreamNested 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.ClosedPropertyNested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusPropertyNested 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.InputStreamPropertyNested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedPropertyNested 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
_automatonFields inherited from class org.refcodes.io.AbstractBytesDestination
_datagramQueue, DATAGRAM_QUEUE_SIZEFields inherited from interface org.refcodes.mixin.Loggable
RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD -
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 org.refcodes.io.AbstractBytesReceiver
available, getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, receiveAllBytes, receiveByte, receiveBytes, setConnectionStatusMethods inherited from class org.refcodes.io.AbstractBytesDestination
pushDatagram, pushDatagrams, pushDatagramsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.refcodes.io.Availability
hasAvailableMethods inherited from interface org.refcodes.io.BytesDestination
receiveBytesMethods inherited from interface org.refcodes.io.BytesReceiver
getInputStream, getInputStream, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skipMethods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUncheckedMethods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warnMethods inherited from interface org.refcodes.io.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 interfaceorg.refcodes.component.Closable- 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
-