public class PrefetchBidirectionalStreamTransceiverImpl<DATA extends Serializable> extends Object implements Transceiver<DATA>
org.refcodes.component.ConnectableComponent.ConnectableAutomaton
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
org.refcodes.component.Closable.CloseAutomaton
Constructor and Description |
---|
PrefetchBidirectionalStreamTransceiverImpl(InputStream aInputStream,
OutputStream aOutputStream) |
PrefetchBidirectionalStreamTransceiverImpl(InputStream aInputStream,
OutputStream aOutputStream,
ExecutorService aExecutorService) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
void |
flush() |
org.refcodes.component.ConnectionStatus |
getConnectionStatus() |
boolean |
hasDatagram()
Determines whether a datagram is available from a
DatagramSender and can
be retrieved via the #readDatagram() method. |
boolean |
isClosable() |
boolean |
isClosed() |
boolean |
isOpened() |
DATA |
readDatagram()
Reads (receives) the next datagram passed from a
DatagramSender
counterpart. |
DATA[] |
readDatagrams()
Reads (receives) the next datagram block passed from a
BlockSender or DatagramSender counterpart. |
void |
releaseAll() |
void |
writeDatagram(DATA aDatagram)
Writes (sends) a datagram to a listening
DatagramReceiver . |
void |
writeDatagrams(DATA[] aDatagram)
Writes (sends) a datagram block to a listening
DatagramReceiver or
BlockReceiver . |
void |
writeDatagrams(DATA[] aDatagram,
int aOffset,
int aLength) |
public PrefetchBidirectionalStreamTransceiverImpl(InputStream aInputStream, OutputStream aOutputStream) throws org.refcodes.component.OpenException
org.refcodes.component.OpenException
public PrefetchBidirectionalStreamTransceiverImpl(InputStream aInputStream, OutputStream aOutputStream, ExecutorService aExecutorService) throws org.refcodes.component.OpenException
org.refcodes.component.OpenException
public boolean isClosed()
isClosed
in interface org.refcodes.component.ClosedAccessor
public boolean isOpened()
isOpened
in interface org.refcodes.component.OpenedAccessor
public boolean hasDatagram() throws org.refcodes.component.OpenException
Receivable
DatagramSender
and can
be retrieved via the #readDatagram()
method.hasDatagram
in interface Receivable
#readDatagram()
method.org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public DATA[] readDatagrams() throws org.refcodes.component.OpenException, InterruptedException
BlockReceiver
BlockSender
or DatagramSender
counterpart. In case none
datagram block is available, then this method blocks until one is
available. To prevent blocking, use the Receivable.hasDatagram()
method to
test beforehand whether a datagram is available (in a multi threaded
usage scenario, #hasBlock()
is not a reliable indicator whether
this method will block or not).
When a Thread
is waiting for a datagram to be read and
Thread.interrupt()
is being called, then the operation is aborted
and an InterruptedException
is thrown.readDatagrams
in interface BlockReceiver<DATA extends Serializable>
readDatagrams
in interface Receiver<DATA extends Serializable>
BlockSender
or
DatagramReceiver
counterpart.org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.InterruptedException
- Thrown when a Thread
is waiting,
sleeping, or otherwise occupied, and the Thread
is
interrupted, either before or during the activity.public org.refcodes.component.ConnectionStatus getConnectionStatus()
getConnectionStatus
in interface org.refcodes.component.ConnectionStatusAccessor
public void releaseAll()
releaseAll
in interface org.refcodes.mixin.Releaseable
public void close() throws org.refcodes.component.CloseException
close
in interface org.refcodes.component.Closable
org.refcodes.component.CloseException
public DATA readDatagram() throws org.refcodes.component.OpenException, InterruptedException
DatagramReceiver
DatagramSender
counterpart. In case none datagram is available, then this method blocks
until one is available. To prevent blocking, use the
Receivable.hasDatagram()
method to test beforehand whether a datagram is
available (in a multi threaded usage scenario, Receivable.hasDatagram()
is
not a reliable indicator whether this method will block or not).
When a Thread
is waiting for a datagram to be read and
Thread.interrupt()
is being called, then the operation is aborted
and an InterruptedException
is thrown.readDatagram
in interface DatagramReceiver<DATA extends Serializable>
DatagramSender
counterpart.org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.InterruptedException
- Thrown when a Thread
is waiting,
sleeping, or otherwise occupied, and the Thread
is
interrupted, either before or during the activity.public void writeDatagrams(DATA[] aDatagram) throws org.refcodes.component.OpenException
BlockSender
DatagramReceiver
or
BlockReceiver
.writeDatagrams
in interface BlockSender<DATA extends Serializable>
writeDatagrams
in interface Sender<DATA extends Serializable>
aDatagram
- The datagram to be pushed to the receiving
DatagramReceiver
or BlockReceiver
.org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public void writeDatagrams(DATA[] aDatagram, int aOffset, int aLength) throws org.refcodes.component.OpenException
writeDatagrams
in interface BlockSender<DATA extends Serializable>
writeDatagrams
in interface Sender<DATA extends Serializable>
org.refcodes.component.OpenException
public void writeDatagram(DATA aDatagram) throws org.refcodes.component.OpenException
DatagramSender
DatagramReceiver
.writeDatagram
in interface DatagramSender<DATA extends Serializable>
aDatagram
- The datagram to be pushed to the receiving
DatagramSender
.org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public void flush() throws org.refcodes.component.OpenException
public boolean isClosable()
isClosable
in interface org.refcodes.component.Closable.CloseAutomaton
Copyright © 2017. All rights reserved.