Class AbstractInputStreamReceiver<DATA extends Serializable>

java.lang.Object
org.refcodes.component.AbstractConnectableAutomaton
org.refcodes.io.AbstractInputStreamReceiver<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
Direct Known Subclasses:
BidirectionalStreamConnectionTransceiverImpl, InputStreamConnectionReceiverImpl

public abstract class AbstractInputStreamReceiver<DATA extends Serializable> extends org.refcodes.component.AbstractConnectableAutomaton implements DatagramsReceiver<DATA>
Abstract implementation of the DatagramsReceiver 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
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Checks for datagram.
    void
    protected boolean
    isOpenable(InputStream aInputStream)
    Checks if is openable.
    protected void
    open(InputStream aInputStream)
    Open, see also ConnectionOpenable.open(Object).
    Reads (receives) the next datagram passed from a DatagramTransmitter counterpart.

    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, receiveAll
  • Constructor Details

    • AbstractInputStreamReceiver

      public AbstractInputStreamReceiver()
  • Method Details

    • available

      public int available() throws IOException
      Checks for datagram.
      Specified by:
      available in interface Availability
      Returns:
      true, if successful
      Throws:
      IOException - the open exception
    • 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.
    • 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
    • open

      protected void open(InputStream aInputStream) throws IOException
      Open, see also ConnectionOpenable.open(Object).
      Parameters:
      aInputStream - the input stream
      Throws:
      IOException - the open exception
    • isOpenable

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