Class BidirectionalStreamTransceiverImpl<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.Flushable

        org.refcodes.component.Flushable.FlushBuilder<B extends org.refcodes.component.Flushable.FlushBuilder<B>>
      • 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
      BidirectionalStreamTransceiverImpl​(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)
      Instantiates a new bidirectional stream transceiver impl.
    • Constructor Detail

      • BidirectionalStreamTransceiverImpl

        public BidirectionalStreamTransceiverImpl​(java.io.InputStream aInputStream,
                                                  java.io.OutputStream aOutputStream)
                                           throws org.refcodes.component.OpenException
        Instantiates a new bidirectional stream transceiver impl.
        Parameters:
        aInputStream - the input stream
        aOutputStream - the output stream
        Throws:
        org.refcodes.component.OpenException - the open exception
    • Method Detail

      • isClosed

        public boolean isClosed​()
        Specified by:
        isClosed in interface org.refcodes.component.ClosedAccessor
      • isOpened

        public boolean isOpened​()
        Specified by:
        isOpened in interface org.refcodes.component.OpenedAccessor
      • 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.
      • 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
      • getConnectionStatus

        public org.refcodes.component.ConnectionStatus getConnectionStatus​()
        Specified by:
        getConnectionStatus in interface org.refcodes.component.ConnectionStatusAccessor
      • 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
        Throws:
        org.refcodes.component.CloseException
      • 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.
      • writeDatagrams

        public void writeDatagrams​(DATA[] aDatagram)
                            throws org.refcodes.component.OpenException
        Writes (sends) a datagram block to a listening DatagramReceiver or BlockReceiver.
        Specified by:
        writeDatagrams in interface BlockConsumer<DATA extends java.io.Serializable>
        Specified by:
        writeDatagrams in interface Consumer<DATA extends java.io.Serializable>
        Parameters:
        aDatagram - The datagram to be pushed to the receiving DatagramReceiver or BlockReceiver.
        Throws:
        org.refcodes.component.OpenException - Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
      • writeDatagrams

        public void writeDatagrams​(DATA[] aDatagram,
                                   int aOffset,
                                   int aLength)
                            throws org.refcodes.component.OpenException
        Write datagrams.
        Specified by:
        writeDatagrams in interface BlockConsumer<DATA extends java.io.Serializable>
        Specified by:
        writeDatagrams in interface Sender<DATA extends java.io.Serializable>
        Parameters:
        aDatagram - the datagram
        aOffset - the offset
        aLength - the length
        Throws:
        org.refcodes.component.OpenException - the open exception
      • writeDatagram

        public void writeDatagram​(DATA aDatagram)
                           throws org.refcodes.component.OpenException
        Writes (sends) a datagram to a listening DatagramReceiver.
        Specified by:
        writeDatagram in interface Consumer<DATA extends java.io.Serializable>
        Specified by:
        writeDatagram in interface DatagramConsumer<DATA extends java.io.Serializable>
        Parameters:
        aDatagram - The datagram to be pushed to the receiving DatagramConsumer.
        Throws:
        org.refcodes.component.OpenException - Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
      • flush

        public void flush​()
                   throws org.refcodes.component.OpenException
        Specified by:
        flush in interface java.io.Flushable
        Specified by:
        flush in interface org.refcodes.component.Flushable
        Specified by:
        flush in interface Sender<DATA extends java.io.Serializable>
        Throws:
        org.refcodes.component.OpenException
      • isClosable

        public boolean isClosable​()
        Specified by:
        isClosable in interface org.refcodes.component.Closable.CloseAutomaton