Class ConnectionManagerImpl

java.lang.Object
org.jivesoftware.openfire.container.BasicModule
org.jivesoftware.openfire.spi.ConnectionManagerImpl
All Implemented Interfaces:
ConnectionManager, Module, CertificateEventListener, PropertyEventListener

public class ConnectionManagerImpl extends BasicModule implements ConnectionManager, CertificateEventListener, PropertyEventListener
  • Field Details

    • EVENTEXECUTOR_POOL_SIZE

      public static final SystemProperty<Integer> EVENTEXECUTOR_POOL_SIZE
      Number of threads used to process connection events.
    • EVENTEXECUTOR_POOL_KEEP_ALIVE

      public static final SystemProperty<Duration> EVENTEXECUTOR_POOL_KEEP_ALIVE
      Duration that unused, surplus threads that once processed connection events are kept alive.
  • Constructor Details

    • ConnectionManagerImpl

      public ConnectionManagerImpl() throws IOException
      Instantiates a new connection manager.
      Throws:
      IOException - if the identity or trust stores could not be loaded
  • Method Details

    • getListenAddress

      public InetAddress getListenAddress() throws UnknownHostException
      Returns the specific network interface on which Openfire is configured to listen, or null when no such preference has been configured.
      Returns:
      A network interface or null.
      Throws:
      UnknownHostException - When the configured network name cannot be resolved.
    • getAdminConsoleListenAddress

      public InetAddress getAdminConsoleListenAddress() throws UnknownHostException
      Returns the specific network interface on which the Openfire administration console should be configured to listen, or null when no such preference has been configured.
      Returns:
      A network interface or null.
      Throws:
      UnknownHostException - When the configured network name cannot be resolved.
    • getListeners

      public Set<ConnectionListener> getListeners()
      Returns all connection listeners.
      Specified by:
      getListeners in interface ConnectionManager
      Returns:
      All connection listeners (never null).
    • getListener

      public ConnectionListener getListener(ConnectionType type, boolean startInDirectTlsMode)
      Returns a connection listener. The #startInSslMode parameter is used to distinguish between listeners that expect to receive TLS encrypted data immediately, as opposed to connections that initially accept plain text data (the latter are typically subject to StartTLS for in-band encryption configuration). When for a particular connection type only one of these options is implemented, the parameter value is ignored.
      Specified by:
      getListener in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      startInDirectTlsMode - true when the listener to be configured is in Direct TLS mode, otherwise false.
      Returns:
      The connection listener (never null).
    • getListeners

      public Set<ConnectionListener> getListeners(ConnectionType type)
      Returns al connection listeners for the provided type.
      Specified by:
      getListeners in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      Returns:
      The connection listener (never null).
    • getConnectionAcceptor

      public ConnectionAcceptor getConnectionAcceptor(ConnectionType type, boolean directTLS)
      Returns the connection acceptor for a particular connection type and configuration.
      Parameters:
      type - The connection type for which to return the acceptor
      directTLS - DirectTLS or StartTLS selector
      Returns:
      The connection acceptor for the provided arguments.
    • isEnabled

      public boolean isEnabled(ConnectionType type, boolean startInDirectTlsMode)
      Return if the configuration allows this listener to be enabled (but does not verify that the listener is indeed active) The #startInSslMode parameter is used to distinguish between listeners that expect to receive TLS encrypted data immediately, as opposed to connections that initially accept plain text data (the latter are typically subject to StartTLS for in-band encryption configuration). When for a particular connection type only one of these options is implemented, the parameter value is ignored.
      Specified by:
      isEnabled in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      startInDirectTlsMode - true when the listener to be configured is in Direct TLS mode, otherwise false.
      Returns:
      true if configuration allows this listener to be enabled, otherwise false.
    • enable

      public void enable(ConnectionType type, boolean startInDirectTlsMode, boolean enabled)
      Enables or disables a connection listener. Does nothing if the particular listener is already in the requested state. The #startInSslMode parameter is used to distinguish between listeners that expect to receive TLS encrypted data immediately, as opposed to connections that initially accept plain text data (the latter are typically subject to StartTLS for in-band encryption configuration). When for a particular connection type only one of these options is implemented, the parameter value is ignored.
      Specified by:
      enable in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      startInDirectTlsMode - true when the listener to be configured is in Direct TLS mode, otherwise false.
      enabled - true if the listener is to be enabled, otherwise false.
    • getPort

      public int getPort(ConnectionType type, boolean startInDirectTlsMode)
      Retrieves the configured TCP port on which a listener accepts connections.
      Specified by:
      getPort in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      startInDirectTlsMode - true when the listener to be configured is in DirectTLS mode, otherwise false.
      Returns:
      a port number.
    • setPort

      public void setPort(ConnectionType type, boolean startInDirectTlsMode, int port)
      Sets the TCP port on which a listener accepts connections.
      Specified by:
      setPort in interface ConnectionManager
      Parameters:
      type - The connection type for which a listener is to be configured.
      startInDirectTlsMode - true when the listener to be configured is in Direct TLS mode, otherwise false.
      port - a port number.
    • runConnectionEventTaskAsync

      public CompletableFuture<Void> runConnectionEventTaskAsync(Runnable task)
      Executes the given task asynchronously using the connection event executor. This method is intended for running non-blocking tasks related to connection events, such as session cleanup, route updates, or listener notifications. Any exceptions thrown by the task are logged and propagated as a CompletionException in the returned future. All tasks submitted via this method are executed on the same thread pool used for connection event handling, ensuring consistent resource management and error handling.
      Parameters:
      task - The task to execute asynchronously
      Returns:
      A CompletableFuture that completes when the task finishes, or exceptionally if the task throws an exception
    • supplyConnectionEventTaskAsync

      public <T> CompletableFuture<T> supplyConnectionEventTaskAsync(Supplier<T> task)
      Executes the given task asynchronously using the connection event executor. This method is intended for running non-blocking tasks related to connection events, such as session cleanup, route updates, or listener notifications. Any exceptions thrown by the task are logged and propagated as a CompletionException in the returned future. All tasks submitted via this method are executed on the same thread pool used for connection event handling, ensuring consistent resource management and error handling.
      Type Parameters:
      T - The type of the value returned by the task
      Parameters:
      task - The task to execute asynchronously
      Returns:
      A CompletableFuture that completes with the task's result, or exceptionally if the task throws an exception
    • storeContentChanged

      public void storeContentChanged(CertificateStore store)
      Description copied from interface: CertificateEventListener
      Event triggered when the content of a certificate store was changed.
      Specified by:
      storeContentChanged in interface CertificateEventListener
      Parameters:
      store - The store for which the content was changed.
    • propertySet

      public void propertySet(String property, Map<String,Object> params)
      Description copied from interface: PropertyEventListener
      A property was set. The parameter map params will contain the the value of the property under the key value.
      Specified by:
      propertySet in interface PropertyEventListener
      Parameters:
      property - the name of the property.
      params - event parameters.
    • propertyDeleted

      public void propertyDeleted(String property, Map<String,Object> params)
      Description copied from interface: PropertyEventListener
      A property was deleted.
      Specified by:
      propertyDeleted in interface PropertyEventListener
      Parameters:
      property - the name of the property deleted.
      params - event parameters.
    • xmlPropertySet

      public void xmlPropertySet(String property, Map<String,Object> params)
      Description copied from interface: PropertyEventListener
      An XML property was set. The parameter map params will contain the the value of the property under the key value.
      Specified by:
      xmlPropertySet in interface PropertyEventListener
      Parameters:
      property - the name of the property.
      params - event parameters.
    • xmlPropertyDeleted

      public void xmlPropertyDeleted(String property, Map<String,Object> params)
      Description copied from interface: PropertyEventListener
      An XML property was deleted.
      Specified by:
      xmlPropertyDeleted in interface PropertyEventListener
      Parameters:
      property - the name of the property.
      params - event parameters.
    • initialize

      public void initialize(XMPPServer server)
      Description copied from class: BasicModule

      Initializes the basic module.

      Inheriting classes that choose to override this method MUST call this initialize() method before accessing BasicModule resources.

      Specified by:
      initialize in interface Module
      Overrides:
      initialize in class BasicModule
      Parameters:
      server - the server hosting this module.
    • start

      public void start()
      Description copied from class: BasicModule

      Starts the basic module.

      Inheriting classes that choose to override this method MUST call this start() method before accessing BasicModule resources.

      Specified by:
      start in interface Module
      Overrides:
      start in class BasicModule
    • stop

      public void stop()
      Description copied from class: BasicModule

      Stops the basic module.

      Inheriting classes that choose to override this method MUST call this stop() method before accessing BasicModule resources.

      Specified by:
      stop in interface Module
      Overrides:
      stop in class BasicModule
    • destroy

      public void destroy()
      Description copied from class: BasicModule

      Destroys the module.

      Does nothing in the basic module.

      Specified by:
      destroy in interface Module
      Overrides:
      destroy in class BasicModule