Class AbstractInputStreamReceiver<DATA extends java.io.Serializable>

  • 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, BlockProvider<DATA>, BlockReceiver<DATA>, DatagramProvider<DATA>, DatagramReceiver<DATA>, Provider<DATA>, Receivable, Receiver<DATA>, org.refcodes.mixin.Releaseable
    Direct Known Subclasses:
    BidirectionalStreamConnectionTransceiverImpl, InputStreamConnectionReceiverImpl


    public abstract class AbstractInputStreamReceiver<DATA extends java.io.Serializable>
    extends org.refcodes.component.AbstractConnectableAutomaton
    implements Receiver<DATA>
    Abstract implementation of the Receiver interface. The open(InputStream), AbstractConnectableAutomaton.setConnectionStatus(ConnectionStatus) and AbstractConnectableAutomaton.isOpenable() methods are your hooks when extending this class.
    • 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close​()
      boolean hasDatagram​()
      Checks for datagram.
      protected boolean isOpenable​(java.io.InputStream aInputStream)
      Checks if is openable.
      protected void open​(java.io.InputStream aInputStream)
      Open, see also ConnectionOpenable.open(Object).
      DATA readDatagram​()
      Reads (receives) the next datagram passed from a DatagramSender counterpart.
      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 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

      • AbstractInputStreamReceiver

        public AbstractInputStreamReceiver​()
    • Method Detail

      • hasDatagram

        public boolean hasDatagram​()
                            throws org.refcodes.component.OpenException
        Checks for datagram.
        Specified by:
        hasDatagram in interface Receivable
        Returns:
        true, if successful
        Throws:
        org.refcodes.component.OpenException - the open exception
      • 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.
      • releaseAll

        public void releaseAll​()
        Specified by:
        releaseAll in interface org.refcodes.mixin.Releaseable
      • 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
      • open

        protected void open​(java.io.InputStream aInputStream)
                     throws org.refcodes.component.OpenException
        Open, see also ConnectionOpenable.open(Object).
        Parameters:
        aInputStream - the input stream
        Throws:
        org.refcodes.component.OpenException - the open exception
      • isOpenable

        protected boolean isOpenable​(java.io.InputStream aInputStream)
        Checks if is openable. See also ConnectionOpenable.ConnectionOpenAutomaton.isOpenable(Object).
        Parameters:
        aInputStream - the input stream
        Returns:
        true, if is openable