Module org.firebirdsql.jaybird
Package org.firebirdsql.gds.ng.listeners

# Class AbstractListenerDispatcher<L>

java.lang.Object
org.firebirdsql.gds.ng.listeners.AbstractListenerDispatcher<L>

Type Parameters:
  `L` - Listener type

All Implemented Interfaces:
  `Iterable<L>`

Direct Known Subclasses:
  `AsynchronousChannelListenerDispatcher`, `DatabaseListenerDispatcher`, `ServiceListenerDispatcher`, `StatementListenerDispatcher`, `TransactionListenerDispatcher`

public abstract class AbstractListenerDispatcher<L> extends Object implements Iterable<L>
Dispatcher to maintain a list of listeners of type `L`.

Since:
  3.0
Author:
  Mark Rotteveel

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractListenerDispatcher()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `addListener(L listener)`
  Adds the supplied listener to this dispatcher as a strongly referenced listener.
  `final void`
  `addWeakListener(L listener)`
  Adds the supplied listener to this dispatcher as a weakly referenced listener.
  `final boolean`
  `isShutdown()`
  `final Iterator<L>`
  `iterator()`
  `protected abstract void`
  `logError(String message, Throwable throwable)`
  `protected final void`
  `notify(Consumer<L> notificationHandler, String notificationLogName)`
  `final void`
  `removeAllListeners()`
  Removes all listeners from this dispatcher.
  `final void`
  `removeListener(L listener)`
  Removes the supplied listener from this dispatcher (both weak and strong).
  `final void`
  `shutdown()`
  Shuts down this dispatcher and removes all listeners.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Constructor Details

  - ### AbstractListenerDispatcher

    public AbstractListenerDispatcher()

- ## Method Details

  - ### addListener

    public final void addListener(L listener)
    Adds the supplied listener to this dispatcher as a strongly referenced listener.

    A call to this method has no effect after `shutdown()` has been called.

    Parameters:
      `listener` - Listener object

  - ### addWeakListener

    public final void addWeakListener(L listener)
    Adds the supplied listener to this dispatcher as a weakly referenced listener.

    A call to this method has no effect after `shutdown()` has been called.

    Attempts to add a listener that is already strongly referenced will be ignored.

    Parameters:
      `listener` - Listener object

  - ### removeListener

    public final void removeListener(L listener)
    Removes the supplied listener from this dispatcher (both weak and strong).
    Parameters:
      `listener` - Listener object

  - ### notify

    protected final void notify(Consumer<L> notificationHandler, String notificationLogName)

  - ### logError

    protected abstract void logError(String message, Throwable throwable)

  - ### removeAllListeners

    public final void removeAllListeners()
    Removes all listeners from this dispatcher.

  - ### shutdown

    public final void shutdown()
    Shuts down this dispatcher and removes all listeners.

    After shutdown calls to `addListener(Object)` are ignored.

  - ### isShutdown

    public final boolean isShutdown()
    Returns:
      `true` when this dispatcher has been shut down.

  - ### iterator

    public final Iterator<L> iterator()
    Specified by:
      `iterator` in interface `Iterable<L>`