- java.lang.Object
-
- org.refcodes.io.AbstractShortsDestination
-
- org.refcodes.io.AbstractShortsReceiver
-
- 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
,Receivable
,ShortDestination
,ShortReceiver
,ShortsDestination
,ShortsReceiver
,org.refcodes.mixin.Loggable
- Direct Known Subclasses:
LoopbackShortsReceiver
,LoopbackShortsTransceiver
,ShortArrayReceiver
,ShortsReceiverDecorator
public abstract class AbstractShortsReceiver extends AbstractShortsDestination implements ShortsReceiver
TheAbstractShortsReceiver
is a base abstract implementation of theShortsReceiver
interface providing common functionality for concrete real live implementations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractShortsReceiver.ConnectableAutomaton
The Class ConnectableAutomaton.-
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
-
-
Field Summary
Fields Modifier and Type Field Description protected AbstractShortsReceiver.ConnectableAutomaton
_automaton
-
Fields inherited from class org.refcodes.io.AbstractShortsDestination
_datagramQueue, DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description AbstractShortsReceiver()
Constructs aAbstractShortsReceiver
with a default sized blocking queue enabling a maximum ofAbstractShortsDestination.DATAGRAM_QUEUE_SIZE
datagrams. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue.AbstractShortsReceiver(int aCapacity)
Constructs aAbstractShortsReceiver
with a custom sized blocking queue enabling a maximum of datagrams as specified by the capacity parameter. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
Determines the number of available datagram from aDatagramTransmitter
.void
close()
org.refcodes.component.ConnectionStatus
getConnectionStatus()
boolean
isClosable()
boolean
isClosed()
protected boolean
isOpenable()
Checks if is openable.boolean
isOpened()
protected void
open()
Open.short[]
receiveAllShorts()
Reads (receives) the all currently available data.short
receiveShort()
Reads (receives) the next short available, in case none short is available, then this method blocks until one is available.short[]
receiveShorts(int aMaxLength)
Similar toShortsDestination.receiveAllShorts()
though at maximum the amount of data as provided returned.protected void
setConnectionStatus(org.refcodes.component.ConnectionStatus aConnectionStatus)
Sets the connection status.-
Methods inherited from class org.refcodes.io.AbstractShortsDestination
pushDatagram, pushDatagrams, pushDatagrams
-
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.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
-
Methods inherited from interface org.refcodes.io.ShortsDestination
receiveShorts
-
-
-
-
Field Detail
-
_automaton
protected AbstractShortsReceiver.ConnectableAutomaton _automaton
-
-
Constructor Detail
-
AbstractShortsReceiver
public AbstractShortsReceiver()
Constructs aAbstractShortsReceiver
with a default sized blocking queue enabling a maximum ofAbstractShortsDestination.DATAGRAM_QUEUE_SIZE
datagrams. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue. In case the queue is filled up, adding elements viaAbstractShortsDestination.pushDatagram(short)
to the queue is blocked until elements are taken from the queue viareceiveShort()
.
-
AbstractShortsReceiver
public AbstractShortsReceiver(int aCapacity)
Constructs aAbstractShortsReceiver
with a custom sized blocking queue enabling a maximum of datagrams as specified by the capacity parameter. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue. In case the queue is filled up, adding elements viaAbstractShortsDestination.pushDatagram(short)
to the queue is blocked until elements are taken from the queue viareceiveShort()
.- Parameters:
aCapacity
- The capacity of the queue holding the received datagrams.
-
-
Method Detail
-
receiveShort
public short receiveShort() throws IOException, EOFException
Reads (receives) the next short available, in case none short is available, then this method blocks until one is available.- Specified by:
receiveShort
in interfaceShortDestination
- Specified by:
receiveShort
in interfaceShortsDestination
- Overrides:
receiveShort
in classAbstractShortsDestination
- Returns:
- The next short sent from the
ShortsTransmitter
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.
-
receiveAllShorts
public short[] receiveAllShorts() throws IOException, EOFException
Reads (receives) the all currently available data.- Specified by:
receiveAllShorts
in interfaceShortsDestination
- Specified by:
receiveAllShorts
in interfaceShortsReceiver
- Overrides:
receiveAllShorts
in classAbstractShortsDestination
- 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.
-
receiveShorts
public short[] receiveShorts(int aMaxLength) throws IOException, EOFException
Similar toShortsDestination.receiveAllShorts()
though at maximum the amount of data as provided returned.- Specified by:
receiveShorts
in interfaceShortsDestination
- Specified by:
receiveShorts
in interfaceShortsReceiver
- Overrides:
receiveShorts
in classAbstractShortsDestination
- Parameters:
aMaxLength
- The block-size which is not to exceeded by the returned data. A value of -1 specifies to retrieve all available datagrams (same behavior as methodShortsDestination.receiveAllShorts()
.- 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.
-
available
public int available() throws IOException
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.
-
close
public void close() throws IOException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
isOpened
public boolean isOpened()
- Specified by:
isOpened
in interfaceorg.refcodes.component.ConnectionStatusAccessor
- Specified by:
isOpened
in interfaceorg.refcodes.component.OpenedAccessor
-
isClosable
public boolean isClosable()
- Specified by:
isClosable
in interfaceorg.refcodes.component.Closable.CloseAutomaton
-
isClosed
public boolean isClosed()
- Specified by:
isClosed
in interfaceorg.refcodes.component.ClosedAccessor
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()
- Specified by:
getConnectionStatus
in interfaceorg.refcodes.component.ConnectionStatusAccessor
-
open
protected void open() throws IOException
Open.- Throws:
IOException
- the open exception
-
setConnectionStatus
protected void setConnectionStatus(org.refcodes.component.ConnectionStatus aConnectionStatus)
Sets the connection status.- Parameters:
aConnectionStatus
- the new connection status
-
isOpenable
protected boolean isOpenable()
Checks if is openable.- Returns:
- true, if is openable
-
-