Module org.refcodes.io
Package org.refcodes.io
Class PrefetchBidirectionalStreamTransceiver<DATA extends Serializable>
java.lang.Object
org.refcodes.io.PrefetchBidirectionalStreamTransceiver<DATA>
- Type Parameters:
DATA
- the generic type
- All Implemented Interfaces:
Flushable
,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.Flushable
,org.refcodes.component.OpenedAccessor
,Availability
,DatagramDestination<DATA>
,DatagramReceiver<DATA>
,DatagramsDestination<DATA>
,DatagramSource<DATA>
,DatagramsReceiver<DATA>
,DatagramsSource<DATA>
,DatagramsTransceiver<DATA>
,DatagramsTransmitter<DATA>
,DatagramTransceiver<DATA>
,DatagramTransmitter<DATA>
,Receivable
,Transmittable
public class PrefetchBidirectionalStreamTransceiver<DATA extends Serializable> extends Object implements DatagramsTransceiver<DATA>
The Class PrefetchBidirectionalStreamTransceiver.
- Author:
- steiner
-
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
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.component.Flushable
org.refcodes.component.Flushable.FlushBuilder<B extends org.refcodes.component.Flushable.FlushBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
-
Constructor Summary
Constructors Constructor Description PrefetchBidirectionalStreamTransceiver(InputStream aInputStream, OutputStream aOutputStream)
Instantiates a new prefetch bidirectional stream transceiver impl.PrefetchBidirectionalStreamTransceiver(InputStream aInputStream, OutputStream aOutputStream, ExecutorService aExecutorService)
Instantiates a new prefetch bidirectional stream transceiver impl. -
Method Summary
Modifier and Type Method Description int
available()
Determines the number of available datagram from aDatagramTransmitter
.void
close()
void
flush()
org.refcodes.component.ConnectionStatus
getConnectionStatus()
boolean
isClosable()
boolean
isClosed()
boolean
isOpened()
DATA
receive()
Reads (receives) the next datagram passed from aDatagramTransmitter
counterpart.DATA[]
receiveAll()
Reads (receives) the all currently available data.void
transmit(DATA aDatagram)
Writes (sends) a datagram to a listeningDatagramReceiver
.void
transmit(DATA[] aDatagram, int aOffset, int aLength)
Write datagrams.void
transmitAll(DATA[] aDatagram)
Writes (sends) a datagram block to a listeningDatagramReceiver
orDatagramsReceiver
.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.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.io.DatagramsDestination
receive
Methods inherited from interface org.refcodes.io.DatagramsReceiver
receive
Methods inherited from interface org.refcodes.component.Flushable
flushUnchecked, isFlushable
-
Constructor Details
-
PrefetchBidirectionalStreamTransceiver
public PrefetchBidirectionalStreamTransceiver(InputStream aInputStream, OutputStream aOutputStream) throws IOExceptionInstantiates a new prefetch bidirectional stream transceiver impl.- Parameters:
aInputStream
- the input streamaOutputStream
- the output stream- Throws:
IOException
- the open exception
-
PrefetchBidirectionalStreamTransceiver
public PrefetchBidirectionalStreamTransceiver(InputStream aInputStream, OutputStream aOutputStream, ExecutorService aExecutorService) throws IOExceptionInstantiates a new prefetch bidirectional stream transceiver impl.- Parameters:
aInputStream
- the input streamaOutputStream
- the output streamaExecutorService
- the executor service- Throws:
IOException
- the open exception
-
-
Method Details
-
isClosed
public boolean isClosed()- Specified by:
isClosed
in interfaceorg.refcodes.component.ClosedAccessor
-
isOpened
public boolean isOpened()- Specified by:
isOpened
in interfaceorg.refcodes.component.ConnectionStatusAccessor
- Specified by:
isOpened
in interfaceorg.refcodes.component.OpenedAccessor
-
available
Determines the number of available datagram from aDatagramTransmitter
. Use theDatagramDestination
extenison'sDatagramDestination.receive()
method for retrieving available datagrams.- Specified by:
available
in interfaceAvailability
- Returns:
- The number of datagrams ready to be retrieved .
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
receiveAll
Reads (receives) the all currently available data.- Specified by:
receiveAll
in interfaceDatagramsDestination<DATA extends Serializable>
- Specified by:
receiveAll
in interfaceDatagramsReceiver<DATA extends Serializable>
- Returns:
- The next short block sent from the
DatagramsTransmitter
orDatagramReceiver
counterpart. - Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()- Specified by:
getConnectionStatus
in interfaceorg.refcodes.component.ConnectionStatusAccessor
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
receive
Reads (receives) the next datagram passed from aDatagramTransmitter
counterpart. In case none datagram is available, then this method blocks until one is available. To prevent blocking, use theDatagramReceiver
extension'sAvailability.available()
method to test beforehand whether a byte is available (in a multi-threaded usage scenario,Availability.available()
is not a reliable indicator whether this method will block or not). When aThread
is waiting for a datagram to be read andThread.interrupt()
is being called, then the operation is aborted and anInterruptedException
is thrown.- Specified by:
receive
in interfaceDatagramDestination<DATA extends Serializable>
- Specified by:
receive
in interfaceDatagramsDestination<DATA extends Serializable>
- Returns:
- The next datagram sent from the
DatagramTransmitter
counterpart. - Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
transmitAll
Writes (sends) a datagram block to a listeningDatagramReceiver
orDatagramsReceiver
.- Specified by:
transmitAll
in interfaceDatagramsSource<DATA extends Serializable>
- Parameters:
aDatagram
- The datagram to be pushed to the receivingDatagramReceiver
orDatagramsReceiver
.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
transmit
Write datagrams.- Specified by:
transmit
in interfaceDatagramsSource<DATA extends Serializable>
- Specified by:
transmit
in interfaceDatagramsTransmitter<DATA extends Serializable>
- Parameters:
aDatagram
- the datagramaOffset
- the offsetaLength
- the length- Throws:
IOException
- the open exception
-
transmit
Writes (sends) a datagram to a listeningDatagramReceiver
.- Specified by:
transmit
in interfaceDatagramSource<DATA extends Serializable>
- Specified by:
transmit
in interfaceDatagramsSource<DATA extends Serializable>
- Parameters:
aDatagram
- The datagram to be pushed to the receivingDatagramSource
.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
flush
- Specified by:
flush
in interfaceDatagramTransmitter<DATA extends Serializable>
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
IOException
-
isClosable
public boolean isClosable()- Specified by:
isClosable
in interfaceorg.refcodes.component.Closable.CloseAutomaton
-