Class ObservableConnectionRequestSenderImpl<DATA extends java.io.Serializable,CON>

  • Type Parameters:
    DATA - The type of the datagram to be operated with.
    CON - The type of the connection to be used.
    All Implemented Interfaces:
    java.io.Flushable, org.refcodes.component.Closable, org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.ClosedAccessor, org.refcodes.component.Component, org.refcodes.component.ConnectableComponent, org.refcodes.component.ConnectableComponent.ConnectableAutomaton, org.refcodes.component.ConnectionComponent<DATA>, org.refcodes.component.ConnectionComponent.ConnectionAutomaton<DATA>, org.refcodes.component.ConnectionOpenable<DATA>, org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<DATA>, org.refcodes.component.ConnectionStatusAccessor, org.refcodes.component.Destroyable, org.refcodes.component.Flushable, org.refcodes.component.OpenedAccessor, org.refcodes.io.BlockConsumer<DATA>, org.refcodes.io.BlockSender<DATA>, org.refcodes.io.ConnectionSender<DATA,CON>, org.refcodes.io.Consumer<DATA>, org.refcodes.io.DatagramConsumer<DATA>, org.refcodes.io.DatagramSender<DATA>, ObservableConnectionSender.ObservableConnectionRequestSender<DATA,CON>, org.refcodes.io.Sendable, org.refcodes.io.Sender<DATA>, org.refcodes.mixin.Loggable, org.refcodes.observer.Observable<DATA>


    public class ObservableConnectionRequestSenderImpl<DATA extends java.io.Serializable,CON>
    extends java.lang.Object
    implements ObservableConnectionSender.ObservableConnectionRequestSender<DATA,CON>, org.refcodes.mixin.Loggable
    The ObservableConnectionRequestSenderImpl implements the ObservableConnectionSender for wrapping and extending a ConnectionSender with observable functionality.

    TODO: Test cases are to be created!

    • 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.ConnectionComponent

        org.refcodes.component.ConnectionComponent.ConnectionAutomaton<CON extends java.lang.Object>, org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON extends java.lang.Object,B extends org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON,B>>
      • Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionOpenable

        org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<CON extends java.lang.Object>, org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON extends java.lang.Object,B extends org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON,B>>
      • 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.Destroyable

        org.refcodes.component.Destroyable.DestroyAutomaton
      • 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
    • Field Summary

      • Fields inherited from interface org.refcodes.mixin.Loggable

        RUNTIME_LOGGER_CLASS, RUNTIME_LOGGER_FACTORY_CLASS, RUNTIME_LOGGER_FACTORY_METHOD
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close​()
      void destroy​()
      void flush​()
      org.refcodes.component.ConnectionStatus getConnectionStatus​()
      boolean hasObserverSubscription​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
      boolean isClosable​()
      boolean isClosed​()
      boolean isOpenable​(CON aConnection)
      boolean isOpened​()
      void open​(CON aConnection)
      boolean subscribeObserver​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
      boolean unsubscribeObserver​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
      void writeDatagram​(DATA aDatagram)
      • Methods inherited from interface org.refcodes.component.Closable

        closeIn, closeQuietly, closeUnchecked
      • Methods inherited from interface org.refcodes.component.ConnectionOpenable

        openUnchecked
      • Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor

        isConnectionOpened
      • Methods inherited from interface org.refcodes.io.Consumer

        writeDatagrams
      • Methods inherited from interface org.refcodes.component.Flushable

        flushUnchecked, isFlushable
      • 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.io.Sender

        writeDatagrams
    • Constructor Detail

      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     java.lang.Object aSource)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aSource - The source instance to be used when firing events in case the source is to be different from this class' instance.
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     org.refcodes.observer.EventMetaData aEventMetaData)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aEventMetaData - The EventMetaData to be used when firing events in case the EventMetaData is to be different from the auto-generated EventMetaData.
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     org.refcodes.observer.EventMetaData aEventMetaData,
                                                     java.lang.Object aSource)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aEventMetaData - The EventMetaData to be used when firing events in case the EventMetaData is to be different from the auto-generated EventMetaData.
        aSource - The source instance to be used when firing events in case the source is to be different from this class' instance.
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     java.util.concurrent.ExecutorService aExecutorService,
                                                     org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aExecutorService - The executor service to be used when firing GenericActionEvent instances in multiple threads (if null then a default one is used).
        aExecutionStrategy - The ExecutionStrategy to be used when firing GenericActionEvent instance (if null then the default ExecutionStrategy.SEQUENTIAL is used).
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     java.lang.Object aSource,
                                                     java.util.concurrent.ExecutorService aExecutorService,
                                                     org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aSource - The source instance to be used when firing events in case the source is to be different from this class' instance.
        aExecutorService - The executor service to be used when firing GenericActionEvent instances in multiple threads (if null then a default one is used).
        aExecutionStrategy - The ExecutionStrategy to be used when firing GenericActionEvent instance (if null then the default ExecutionStrategy.SEQUENTIAL is used).
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     org.refcodes.observer.EventMetaData aEventMetaData,
                                                     java.util.concurrent.ExecutorService aExecutorService,
                                                     org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aEventMetaData - The EventMetaData to be used when firing events in case the EventMetaData is to be different from the auto-generated EventMetaData.
        aExecutorService - The executor service to be used when firing GenericActionEvent instances in multiple threads (if null then a default one is used).
        aExecutionStrategy - The ExecutionStrategy to be used when firing GenericActionEvent instance (if null then the default ExecutionStrategy.SEQUENTIAL is used).
      • ObservableConnectionRequestSenderImpl

        public ObservableConnectionRequestSenderImpl​(org.refcodes.io.ConnectionSender<DATA,CON> aConnectionSender,
                                                     org.refcodes.observer.EventMetaData aEventMetaData,
                                                     java.lang.Object aSource,
                                                     java.util.concurrent.ExecutorService aExecutorService,
                                                     org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
        Constructs a ObservableConnectionRequestSenderImpl with the given attributes.
        Parameters:
        aConnectionSender - The ConnectionSender to which the connection method calls are to be delegated to.
        aEventMetaData - The EventMetaData to be used when firing events in case the EventMetaData is to be different from the auto-generated EventMetaData.
        aSource - The source instance to be used when firing events in case the source is to be different from this class' instance.
        aExecutorService - The executor service to be used when firing GenericActionEvent instances in multiple threads (if null then a default one is used).
        aExecutionStrategy - The ExecutionStrategy to be used when firing GenericActionEvent instance (if null then the default ExecutionStrategy.SEQUENTIAL is used).
    • 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
      • getConnectionStatus

        public org.refcodes.component.ConnectionStatus getConnectionStatus​()
        Specified by:
        getConnectionStatus in interface org.refcodes.component.ConnectionStatusAccessor
      • 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 org.refcodes.io.Sender<DATA extends java.io.Serializable>
        Throws:
        org.refcodes.component.OpenException
      • close

        public void close​()
        Specified by:
        close in interface org.refcodes.component.Closable
      • open

        public void open​(CON aConnection)
                  throws org.refcodes.component.OpenException
        Specified by:
        open in interface org.refcodes.component.ConnectionOpenable<DATA extends java.io.Serializable>
        Throws:
        org.refcodes.component.OpenException
      • writeDatagram

        public void writeDatagram​(DATA aDatagram)
                           throws org.refcodes.component.OpenException
        Specified by:
        writeDatagram in interface org.refcodes.io.Consumer<DATA extends java.io.Serializable>
        Specified by:
        writeDatagram in interface org.refcodes.io.DatagramConsumer<DATA extends java.io.Serializable>
        Throws:
        org.refcodes.component.OpenException
      • isClosable

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

        public boolean isOpenable​(CON aConnection)
        Specified by:
        isOpenable in interface org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<DATA extends java.io.Serializable>
      • hasObserverSubscription

        public boolean hasObserverSubscription​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
        Specified by:
        hasObserverSubscription in interface org.refcodes.observer.Observable<DATA extends java.io.Serializable>
      • subscribeObserver

        public boolean subscribeObserver​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
        Specified by:
        subscribeObserver in interface org.refcodes.observer.Observable<DATA extends java.io.Serializable>
      • unsubscribeObserver

        public boolean unsubscribeObserver​(org.refcodes.component.ext.observer.ConnectionObserver.ConnectionRequestObserver aObserver)
        Specified by:
        unsubscribeObserver in interface org.refcodes.observer.Observable<DATA extends java.io.Serializable>
      • destroy

        public void destroy​()
        Specified by:
        destroy in interface org.refcodes.component.Destroyable