DATA - the generic typeorg.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, BlockProvider<DATA>, BlockReceiver<DATA>, DatagramProvider<DATA>, DatagramReceiver<DATA>, Provider<DATA>, Receivable, Receiver<DATA>, org.refcodes.mixin.Releaseablepublic class ReceiverDecorator<DATA extends Serializable> extends AbstractReceiver<DATA> implements Receiver<DATA>
ReceiverDecorator decorates a Provider with the
additional methods of a Receiver making it easy to use a
Provider wherever a Receiver is expected.
This is a very plain implementation: hasDatagram() always returns
true if AbstractConnectableAutomaton.isOpened() is true and as long as none of the
readDatagram(), readDatagrams() or
readDatagrams(int) methods threw an OpenException (
InterruptedException).
This implementation actually behaves as if close() has been called
after verifying hasDatagram() and before any of the read methods
have been called.org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>org.refcodes.component.ClosedAccessor.ClosedMutator, org.refcodes.component.ClosedAccessor.ClosedPropertyorg.refcodes.component.ConnectableComponent.ConnectableAutomatonDATAGRAM_QUEUE_SIZE| Constructor | Description |
|---|---|
ReceiverDecorator(Provider<DATA> aProvider) |
Instantiates a new receiver decorator.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
close() |
|
boolean |
hasDatagram() |
Determines whether a datagram is available from a
DatagramSender. |
DATA |
readDatagram() |
Reads (receives) the next datagram passed from a
DatagramSender
counterpart. |
DATA[] |
readDatagrams() |
Read datagrams.
|
DATA[] |
readDatagrams(int aBlockSize) |
Read datagrams.
|
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatuspushDatagram, pushDatagrams, pushDatagrams, releaseAllcloseIn, closeQuietly, closeUncheckedgetConnectionStatus, isConnectionOpenedpublic DATA readDatagram() throws org.refcodes.component.OpenException, InterruptedException
DatagramSender
counterpart. In case none datagram is available, then this method blocks
until one is available.
To prevent blocking, use the DatagramReceiver extension's
Receivable.hasDatagram() method to test beforehand whether
a byte 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 DatagramProvider<DATA extends Serializable>readDatagram in class AbstractReceiver<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 boolean hasDatagram()
throws org.refcodes.component.OpenException
DatagramSender.
Use the DatagramProvider extenison's
DatagramProvider.readDatagram() method for retrieving the
available datagram.hasDatagram in interface ReceivablehasDatagram in class AbstractReceiver<DATA extends Serializable>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
readDatagrams in interface BlockProvider<DATA extends Serializable>readDatagrams in interface Provider<DATA extends Serializable>readDatagrams in interface Receiver<DATA extends Serializable>readDatagrams in class AbstractReceiver<DATA extends Serializable>org.refcodes.component.OpenException - the open exceptionInterruptedException - the interrupted exceptionpublic DATA[] readDatagrams(int aBlockSize) throws org.refcodes.component.OpenException, InterruptedException
readDatagrams in interface BlockProvider<DATA extends Serializable>readDatagrams in interface Provider<DATA extends Serializable>readDatagrams in interface Receiver<DATA extends Serializable>aBlockSize - the block sizeorg.refcodes.component.OpenException - the open exceptionInterruptedException - the interrupted exceptionpublic void close()
throws org.refcodes.component.CloseException
close in interface org.refcodes.component.Closableclose in class AbstractReceiver<DATA extends Serializable>org.refcodes.component.CloseExceptionCopyright © 2018. All rights reserved.