Module org.refcodes.io
Package org.refcodes.io
Class DatagramsReceiverDecorator<DATA extends Serializable>
java.lang.Object
org.refcodes.component.AbstractConnectableAutomaton
org.refcodes.io.AbstractDatagramsReceiver<DATA>
org.refcodes.io.DatagramsReceiverDecorator<DATA>
- Type Parameters:
DATA
- the generic type
- 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
,DatagramDestination<DATA>
,DatagramReceiver<DATA>
,DatagramsDestination<DATA>
,DatagramsReceiver<DATA>
,Receivable
,org.refcodes.mixin.Loggable
public class DatagramsReceiverDecorator<DATA extends Serializable>
extends AbstractDatagramsReceiver<DATA>
implements DatagramsReceiver<DATA>
The
DatagramsReceiverDecorator
decorates a
DatagramsDestination
with the additional methods of a
DatagramsReceiver
making it easy to use a
DatagramsDestination
wherever a DatagramsReceiver
is
expected.-
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.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
-
Field Summary
Fields inherited from class org.refcodes.io.AbstractDatagramsReceiver
DATAGRAM_QUEUE_SIZE
Fields inherited from interface org.refcodes.mixin.Loggable
RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD
-
Constructor Summary
ConstructorDescriptionDatagramsReceiverDecorator
(DatagramsDestination<DATA> aProvider) Instantiates a new receiver decorator. -
Method Summary
Modifier and TypeMethodDescriptionint
Determines the number of available datagram from aDatagramTransmitter
.void
close()
receive()
Reads (receives) the next datagram passed from aDatagramTransmitter
counterpart.DATA[]
receive
(int aMaxSize) Similar toDatagramsDestination.receiveAll()
though at maximum the amount of data as provided returned.DATA[]
Reads (receives) the all currently available data.Methods inherited from class org.refcodes.io.AbstractDatagramsReceiver
pushDatagram, pushDatagrams, pushDatagrams
Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
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.component.Closable.CloseAutomaton
isClosable
Methods inherited from interface org.refcodes.component.ClosedAccessor
isClosed
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
Methods inherited from interface org.refcodes.io.DatagramsDestination
receive
Methods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
-
Constructor Details
-
DatagramsReceiverDecorator
Instantiates a new receiver decorator.- Parameters:
aProvider
- the provider
-
-
Method Details
-
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>
- Overrides:
receive
in classAbstractDatagramsReceiver<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.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
available
Determines the number of available datagram from aDatagramTransmitter
. Use theDatagramDestination
extenison'sDatagramDestination.receive()
method for retrieving available datagrams.- Specified by:
available
in interfaceAvailability
- Overrides:
available
in classAbstractDatagramsReceiver<DATA extends Serializable>
- 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>
- Overrides:
receiveAll
in classAbstractDatagramsReceiver<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.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
receive
Similar toDatagramsDestination.receiveAll()
though at maximum the amount of data as provided returned.- Specified by:
receive
in interfaceDatagramsDestination<DATA extends Serializable>
- Specified by:
receive
in interfaceDatagramsReceiver<DATA extends Serializable>
- Parameters:
aMaxSize
- the a block size- 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.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractDatagramsReceiver<DATA extends Serializable>
- Throws:
IOException
-