package org.jboss.as.undertow;
import java.io.IOException;
import java.net.InetSocketAddress;
import io.undertow.ajp.AjpOpenListener;
import io.undertow.server.OpenListener;
import org.xnio.ChannelListener;
import org.xnio.IoUtils;
import org.xnio.XnioWorker;
import org.xnio.channels.AcceptingChannel;
import org.xnio.channels.ConnectedStreamChannel;
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
*/
public class AJPListenerService extends AbstractListenerService<AJPListenerService> {
private AcceptingChannel<? extends ConnectedStreamChannel> server;
public AJPListenerService(String name) {
super(name);
}
@Override
protected OpenListener createOpenListener() {
return new AjpOpenListener(getBufferPool().getValue(), getBufferSize());
}
@Override
void startListening(XnioWorker worker, InetSocketAddress socketAddress, ChannelListener<? super AcceptingChannel<ConnectedStreamChannel>> acceptListener) throws IOException {
server = worker.createStreamServer(binding.getValue().getSocketAddress(), acceptListener, SERVER_OPTIONS);
server.resumeAccepts();
UndertowLogger.ROOT_LOGGER.listenerStarted("AJP", getName(), binding.getValue().getSocketAddress());
}
@Override
void stopListening() {
server.suspendAccepts();
UndertowLogger.ROOT_LOGGER.listenerSuspend("AJP", getName());
IoUtils.safeClose(server);
UndertowLogger.ROOT_LOGGER.listenerStopped("AJP", getName(), getBinding().getValue().getSocketAddress());
}
@Override
public AJPListenerService getValue() throws IllegalStateException, IllegalArgumentException {
return this;
}
@Override
public boolean isSecure() {
return false;
}
}