java.lang.Object
org.refcodes.component.AbstractConnectable
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
- 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 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
ConstructorDescriptionCreates anAbstractPrefetchInputStreamByteReceiver
.AbstractPrefetchInputStreamByteReceiver
(int aQueueCapacity) Creates anAbstractPrefetchInputStreamByteReceiver
using the given datagram queue capacity.AbstractPrefetchInputStreamByteReceiver
(int aQueueCapacity, ExecutorService aExecutorService) Creates anAbstractPrefetchInputStreamByteReceiver
using the givenExecutorService
required for thread generation in an JEE environment.AbstractPrefetchInputStreamByteReceiver
(ExecutorService aExecutorService) Creates anAbstractPrefetchInputStreamByteReceiver
using the givenExecutorService
required for thread generation in an JEE environment. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
protected boolean
isOpenable
(InputStream aInputStream) Checks if is openable.protected void
open
(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 org.refcodes.component.AbstractConnectable
isThrownAsOfAlreadyClosed
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.io.Skippable
skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin, skipAvailableWithin
-
Constructor Details
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver()Creates anAbstractPrefetchInputStreamByteReceiver
. -
AbstractPrefetchInputStreamByteReceiver
Creates anAbstractPrefetchInputStreamByteReceiver
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.
-
AbstractPrefetchInputStreamByteReceiver
public AbstractPrefetchInputStreamByteReceiver(int aQueueCapacity) Creates anAbstractPrefetchInputStreamByteReceiver
using 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 anAbstractPrefetchInputStreamByteReceiver
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 viaAbstractBytesReceiver.receiveByte()
(AbstractBytesReceiver.receiveAllBytes()
).aExecutorService
- TheExecutorService
to be used, when null then anExecutorService
something lineExecutors.newCachedThreadPool()
is then retrieved.
-
-
Method Details
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in 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
-