Class AbstractReceiver<DATA extends java.io.Serializable>

    • 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 int DATAGRAM_QUEUE_SIZE  
      • Fields inherited from interface org.refcodes.mixin.Loggable

        RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractReceiver​()
      Constructs a AbstractReceiver 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.
      AbstractReceiver​(int aCapacity)
      Constructs a AbstractReceiver 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
      void close​()
      boolean hasDatagram​()
      Determines whether a datagram is available from a DatagramSender.
      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.
      DATA readDatagram​()
      Reads (receives) the next datagram passed from a DatagramSender counterpart.
      DATA[] readDatagrams​()
      Read datagrams.
      void releaseAll​()
      • Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton

        getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
      • 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, isConnectionOpened
      • Methods inherited from interface org.refcodes.mixin.Loggable

        alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.refcodes.component.OpenedAccessor

        isOpened
    • Constructor Detail

      • AbstractReceiver

        public AbstractReceiver​()
        Constructs a AbstractReceiver 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 readDatagram().
      • AbstractReceiver

        public AbstractReceiver​(int aCapacity)
        Constructs a AbstractReceiver 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 readDatagram().
        Parameters:
        aCapacity - The capacity of the queue holding the received datagrams.
    • Method Detail

      • readDatagram

        public DATA readDatagram​()
                          throws org.refcodes.component.OpenException,
                                 java.lang.InterruptedException
        Reads (receives) the next datagram passed from a 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.
        Specified by:
        readDatagram in interface DatagramProvider<DATA extends java.io.Serializable>
        Returns:
        The next datagram sent from the DatagramSender counterpart.
        Throws:
        org.refcodes.component.OpenException - Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
        java.lang.InterruptedException - Thrown when a Thread is waiting, sleeping, or otherwise occupied, and the Thread is interrupted, either before or during the activity.
      • readDatagrams

        public DATA[] readDatagrams​()
                             throws org.refcodes.component.OpenException,
                                    java.lang.InterruptedException
        Read datagrams.
        Specified by:
        readDatagrams in interface BlockProvider<DATA extends java.io.Serializable>
        Specified by:
        readDatagrams in interface Provider<DATA extends java.io.Serializable>
        Specified by:
        readDatagrams in interface Receiver<DATA extends java.io.Serializable>
        Returns:
        the DAT a[]
        Throws:
        org.refcodes.component.OpenException - the open exception
        java.lang.InterruptedException - the interrupted exception
      • hasDatagram

        public boolean hasDatagram​()
                            throws org.refcodes.component.OpenException
        Determines whether a datagram is available from a DatagramSender. Use the DatagramProvider extenison's DatagramProvider.readDatagram() method for retrieving the available datagram.
        Specified by:
        hasDatagram in interface Receivable
        Returns:
        True in case there is a datagram ready to be retrieved .
        Throws:
        org.refcodes.component.OpenException - Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
      • close

        public void close​()
                   throws org.refcodes.component.CloseException
        Specified by:
        close in interface org.refcodes.component.Closable
        Overrides:
        close in class org.refcodes.component.AbstractConnectableAutomaton
        Throws:
        org.refcodes.component.CloseException
      • releaseAll

        public void releaseAll​()
        Specified by:
        releaseAll in interface org.refcodes.mixin.Releaseable
      • pushDatagram

        protected void pushDatagram​(DATA aDatagram)
                             throws org.refcodes.component.OpenException
        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 readDatagram(): use hasDatagram() 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 readDatagram() method.
        Throws:
        org.refcodes.component.OpenException - the open exception
      • pushDatagrams

        protected void pushDatagrams​(DATA[] aDatagrams)
                              throws org.refcodes.component.OpenException
        Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams. Them datagrams can be retrieved via readDatagram(): use hasDatagram() 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 readDatagram() method.
        Throws:
        org.refcodes.component.OpenException - the open exception
      • pushDatagrams

        protected void pushDatagrams​(DATA[] aDatagrams,
                                     int aOffset,
                                     int aLength)
                              throws org.refcodes.component.OpenException
        Pushes datagrams into the receiver and puts them into the blocking queue containing the so far received datagrams. Them datagrams can be retrieved via readDatagram(): use hasDatagram() 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 readDatagram() 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:
        org.refcodes.component.OpenException - the open exception