All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jivesoftware.openfire.spi.LegacyConnectionAcceptor Maven / Gradle / Ivy

The newest version!
package org.jivesoftware.openfire.spi;

import org.jivesoftware.openfire.net.SocketAcceptThread;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * A connection acceptor that employs the legacy, pre-MINA/NIO socket implementation of Openfire.
 *
 * @author Guus der Kinderen, [email protected]
 * @deprecated Used only for S2S, which should be be ported to NIO.
 */
@Deprecated
public class LegacyConnectionAcceptor extends ConnectionAcceptor
{
    private final Logger Log = LoggerFactory.getLogger( LegacyConnectionAcceptor.class );

    private SocketAcceptThread socketAcceptThread;

    /**
     * Constructs a new instance which will accept new connections based on the provided configuration.
     * 

* The provided configuration is expected to be immutable. ConnectionAcceptor instances are not expected to handle * changes in configuration. When such changes are to be applied, an instance is expected to be replaced. *

* Newly instantiated ConnectionAcceptors will not accept any connections before {@link #start()} is invoked. * * @param configuration The configuration for connections to be accepted (cannot be null). */ public LegacyConnectionAcceptor( ConnectionConfiguration configuration ) { super( configuration ); } /** * Starts this acceptor by binding the socket acceptor. When the acceptor is already started, a warning will be * logged and the method invocation is otherwise ignored. */ @Override public synchronized void start() { if ( socketAcceptThread != null ) { Log.warn( "Unable to start acceptor (it is already started!)" ); return; } if ( configuration.getMaxThreadPoolSize() > 1 ) { Log.warn( "Configuration allows for up to " + configuration.getMaxThreadPoolSize() + " threads, although implementation is limited to exactly one." ); } try { socketAcceptThread = new SocketAcceptThread(configuration.getPort(), configuration.getBindAddress()); socketAcceptThread.setDaemon(true); socketAcceptThread.setPriority(Thread.MAX_PRIORITY); socketAcceptThread.start(); } catch (Exception e) { System.err.println( "Error starting " + configuration.getPort() + ": " + e.getMessage() ); Log.error( "Error starting: " + configuration.getPort(), e ); // Reset for future use. if (socketAcceptThread != null ) { try { socketAcceptThread.shutdown(); } finally { socketAcceptThread = null; } } } } /** * Stops this acceptor by unbinding the socket acceptor. Does nothing when the instance is not started. */ @Override public synchronized void stop() { if ( socketAcceptThread != null ) { try { socketAcceptThread.shutdown(); } finally { socketAcceptThread = null; } } } @Override public synchronized boolean isIdle() { return socketAcceptThread != null; // We're not tracking actual sessions. This is a best effort response. } @Override public synchronized void reconfigure( ConnectionConfiguration configuration ) { this.configuration = configuration; // nothing can be reloaded in this implementation. } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy