Class AbstractDatagramsReceiver<DATA extends Serializable>

java.lang.Object
org.refcodes.component.AbstractConnectableAutomaton
org.refcodes.io.AbstractDatagramsReceiver<DATA>
Type Parameters:
DATA - The type of the datagram to be operated with.
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
Direct Known Subclasses:
AbstractPrefetchInputStreamReceiver, DatagramsReceiverDecorator, LoopbackDatagramsReceiver, LoopbackDatagramsTransceiver

public abstract class AbstractDatagramsReceiver<DATA extends Serializable> extends org.refcodes.component.AbstractConnectableAutomaton implements DatagramsReceiver<DATA>, org.refcodes.mixin.Loggable
The AbstractDatagramsReceiver is a base abstract implementation of the DatagramsReceiver interface providing common functionality for concrete real live implementations.
  • 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
    Modifier and Type
    Field
    Description
    static final int
     

    Fields inherited from interface org.refcodes.mixin.Loggable

    RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a AbstractDatagramsReceiver with a default sized blocking queue enabling a maximum of DATAGRAM_QUEUE_SIZE datagrams.
    Constructs a AbstractDatagramsReceiver with a custom sized blocking queue enabling a maximum of datagrams as specified by the capacity parameter.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Determines the number of available datagram from a DatagramTransmitter.
    void
    protected void
    pushDatagram(DATA aDatagram)
    Pushes a datagram into the receiver and puts it into the blocking queue containing the so far received datagrams.
    protected void
    pushDatagrams(DATA[] aDatagrams)
    Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams.
    protected void
    pushDatagrams(DATA[] aDatagrams, int aOffset, int aLength)
    Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams.
    Reads (receives) the next datagram passed from a DatagramTransmitter counterpart.
    Reads (receives) the all currently available data.

    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.io.DatagramsReceiver

    receive

    Methods inherited from interface org.refcodes.mixin.Loggable

    alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
  • Field Details

  • Constructor Details

    • AbstractDatagramsReceiver

      public AbstractDatagramsReceiver()
      Constructs a AbstractDatagramsReceiver with a default sized blocking queue enabling a maximum of 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 via pushDatagram(Serializable) to the queue is blocked until elements are taken from the queue via receive().
    • AbstractDatagramsReceiver

      public AbstractDatagramsReceiver(int aCapacity)
      Constructs a AbstractDatagramsReceiver 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 via pushDatagram(Serializable) to the queue is blocked until elements are taken from the queue via receive().
      Parameters:
      aCapacity - The capacity of the queue holding the received datagrams.
  • Method Details

    • receive

      public DATA receive() throws IOException
      Reads (receives) the next datagram passed from a DatagramTransmitter counterpart. In case none datagram is available, then this method blocks until one is available. To prevent blocking, use the DatagramReceiver extension's Availability.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 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.
      Specified by:
      receive in interface DatagramDestination<DATA extends Serializable>
      Specified by:
      receive in interface DatagramsDestination<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.
    • receiveAll

      public DATA[] receiveAll() throws IOException, EOFException
      Reads (receives) the all currently available data.
      Specified by:
      receiveAll in interface DatagramsDestination<DATA extends Serializable>
      Specified by:
      receiveAll in interface DatagramsReceiver<DATA extends Serializable>
      Returns:
      The next short block sent from the DatagramsTransmitter or DatagramReceiver 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 a DatagramTransmitter. Use the DatagramDestination extenison's DatagramDestination.receive() method for retrieving available datagrams.
      Specified by:
      available in interface Availability
      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 interface org.refcodes.component.Closable
      Overrides:
      close in class org.refcodes.component.AbstractConnectableAutomaton
      Throws:
      IOException
    • pushDatagram

      protected void pushDatagram(DATA aDatagram) throws IOException
      Pushes a datagram into the receiver and puts it into the blocking queue containing the so far received datagrams. Them datagrams can be retrieved via receive(): use available() to test beforehand whether there is a datagram available.
      Parameters:
      aDatagram - The datagram to be pushed at the end of the blocking queue; to be retrieved with the receive() method.
      Throws:
      IOException - the open exception
    • pushDatagrams

      protected void pushDatagrams(DATA[] aDatagrams) throws IOException
      Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams. Them datagrams can be retrieved via receive(): use available() to test beforehand whether there is a datagram available.
      Parameters:
      aDatagrams - The datagrams to be pushed at the end of the blocking queue; to be retrieved with the receive() method.
      Throws:
      IOException - the open exception
    • pushDatagrams

      protected void pushDatagrams(DATA[] aDatagrams, int aOffset, int aLength) throws IOException
      Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams. Them datagrams can be retrieved via receive(): use available() to test beforehand whether there is a datagram available.
      Parameters:
      aDatagrams - The datagrams to be pushed at the end of the blocking queue; to be retrieved with the receive() method.
      aOffset - The offset to start taking data from to be pushed.
      aLength - The number of elements to be pushed from the offset onwards.
      Throws:
      IOException - the open exception