/** * Create the poller. With some versions of APR, the maximum poller size will * be 62 (recompiling APR is necessary to remove this limitation). */ protected void init() { pool = Pool.create(serverSockPool); int size = pollerSize / pollerThreadCount; int timeout = keepAliveTimeout; if (timeout < 0) { timeout = soTimeout; } serverPollset = allocatePoller(size, pool, timeout); if (serverPollset == 0 && size > 1024) { size = 1024; serverPollset = allocatePoller(size, pool, timeout); } if (serverPollset == 0) { size = 62; serverPollset = allocatePoller(size, pool, timeout); } desc = new long[size * 2]; keepAliveCount = 0; addS = new long[size]; addCount = 0; }
public InetAddress getAddress() { return endpoint.getAddress(); } public void setAddress(InetAddress ia) { endpoint.setAddress(ia); }
public boolean getDeferAccept() { return ((AprEndpoint)endpoint).getDeferAccept(); } public void setDeferAccept(boolean deferAccept) { ((AprEndpoint)endpoint).setDeferAccept(deferAccept); }
/** * Create the sendfile poller. With some versions of APR, the maximum * poller size will be 62 (recompiling APR is necessary to remove this * limitation). */ protected void init() { pool = Pool.create(serverSockPool); int size = sendfileSize; if (size <= 0) { size = (OS.IS_WIN32 || OS.IS_WIN64) ? (1 * 1024) : (16 * 1024); } sendfilePollset = allocatePoller(size, pool, getSoTimeout()); if (sendfilePollset == 0 && size > 1024) { size = 1024; sendfilePollset = allocatePoller(size, pool, getSoTimeout()); } if (sendfilePollset == 0) { size = 62; sendfilePollset = allocatePoller(size, pool, getSoTimeout()); } desc = new long[size * 2]; sendfileData = new HashMap<>(size); addS = new ArrayList<>(); }
/** * Create the sendfile poller. With some versions of APR, the maximum * poller size will be 62 (recompiling APR is necessary to remove this * limitation). */ protected void init() { pool = Pool.create(serverSockPool); int size = sendfileSize; if (size <= 0) { size = (OS.IS_WIN32 || OS.IS_WIN64) ? (1 * 1024) : (16 * 1024); } sendfilePollset = allocatePoller(size, pool, getConnectionTimeout()); if (sendfilePollset == 0 && size > 1024) { size = 1024; sendfilePollset = allocatePoller(size, pool, getConnectionTimeout()); } if (sendfilePollset == 0) { size = 62; sendfilePollset = allocatePoller(size, pool, getConnectionTimeout()); } desc = new long[size * 2]; sendfileData = new HashMap<>(size); addS = new ArrayList<>(); }
if (getAddress() != null) { addressStr = getAddress().getHostAddress(); getPort(), 0, rootPool); ret = Socket.listen(serverSock, getBacklog()); if (ret != 0) { throw new Exception(sm.getString("endpoint.init.listen", "" + ret, Error.strerror(ret))); if ((OS.IS_WIN32 || OS.IS_WIN64) && (getMaxConnections() > 1024)) { pollerThreadCount = getMaxConnections() / 1024; setMaxConnections( getMaxConnections() - (getMaxConnections() % 1024)); } else { if (isSSLEnabled()) {
if (getAddress() != null) { addressStr = getAddress().getHostAddress(); getPort(), 0, rootPool); if (getIpv6v6only()) { Socket.optSet(serverSock, Socket.APR_IPV6_V6ONLY, 1); } else { ret = Socket.listen(serverSock, getAcceptCount()); if (ret != 0) { throw new Exception(sm.getString("endpoint.init.listen", "" + ret, Error.strerror(ret))); setUseSendfileInternal(Library.APR_HAS_SENDFILE); } else if (getUseSendfile() && !Library.APR_HAS_SENDFILE) { setUseSendfileInternal(false); if (isSSLEnabled()) { for (SSLHostConfig sslHostConfig : sslHostConfigs.values()) { sslHostConfig.setConfigType(getSslConfigType()); createSSLContext(sslHostConfig); SSLHostConfig defaultSSLHostConfig = sslHostConfigs.get(getDefaultSSLHostConfigName()); if (defaultSSLHostConfig == null) { throw new IllegalArgumentException(sm.getString("endpoint.noSslHostConfig", getDefaultSSLHostConfigName(), getName()));
if (getExecutor() == null) { createExecutor(); initializeConnectionLatch(); Thread pollerThread = new Thread(poller, getName() + "-Poller"); pollerThread.setPriority(threadPriority); pollerThread.setDaemon(true); sendfile.init(); Thread sendfileThread = new Thread(sendfile, getName() + "-Sendfile"); sendfileThread.setPriority(threadPriority); sendfileThread.setDaemon(true); startAcceptorThreads(); getName() + "-AsyncTimeout"); timeoutThread.setPriority(threadPriority); timeoutThread.setDaemon(true);
if (getAddress() != null) { addressStr = getAddress().getHostAddress(); getPort(), 0, rootPool); ret = Socket.listen(serverSock, getBacklog()); if (ret != 0) { throw new Exception(sm.getString("endpoint.init.listen", "" + ret, Error.strerror(ret))); if (isSSLEnabled()) {
long soTimeout = endpoint.getSoTimeout(); endpoint.getPoller().add(socket); break; sendfileData.socket = socket; sendfileData.keepAlive = keepAlive && !pipelined; if (!endpoint.getSendfile().add(sendfileData)) { openSocket = true; break;
int size = getMaxConnections() / pollerThreadCount; int keepAliveTimeout = getKeepAliveTimeout(); int socketTimeout = socketProperties.getSoTimeout(); if (keepAliveTimeout != socketTimeout && !comet) { separateKeepAlive = true; connectionPollset = allocatePoller(size, pool, socketTimeout); if (separateKeepAlive) { keepAlivePollset = allocatePoller(size, pool, keepAliveTimeout); connectionPollset = allocatePoller(size, pool, socketTimeout); if (separateKeepAlive) { keepAlivePollset = allocatePoller(size, pool, keepAliveTimeout); connectionPollset = allocatePoller(size, pool, socketTimeout); if (separateKeepAlive) { keepAlivePollset = allocatePoller(size, pool, keepAliveTimeout);
sendfileCount++; } else { getLog().warn(sm.getString( "endpoint.sendfile.addfail", Integer.valueOf(rv), getSoTimeout() * 1000); getPoller().add( state.socket, getKeepAliveTimeout(), true, false); } else { errn -= Status.APR_OS_START_USERERR; getLog().error(sm.getString( "Unexpected poller error", Integer.valueOf(errn), if (getSoTimeout() > 0 && maintainTime > 1000000L && sendfileRunning) { rv = Poll.maintain(sendfilePollset, desc, false); getLog().error(sm.getString("endpoint.poll.error"), t);
@Override public Executor getExecutor() { return endpoint.getExecutor(); } }
public int getPort() { return endpoint.getPort(); } public void setPort(int port) { endpoint.setPort(port); }
public int getPollTime() { return ((AprEndpoint)endpoint).getPollTime(); } public void setPollTime(int pollTime) { ((AprEndpoint)endpoint).setPollTime(pollTime); }
@Override protected void registerWriteInterest() { ((AprEndpoint) endpoint).getPoller().add(socket, -1, false, true); }
long soTimeout = endpoint.getSoTimeout(); while (!error && keepAlive && !comet && !isAsync() && !endpoint.isPaused()) { endpoint.getPoller().add(socketRef); break; sendfileData.socket = socketRef; sendfileData.keepAlive = keepAlive; if (!endpoint.getSendfile().add(sendfileData)) { openSocket = true; break; if (error || endpoint.isPaused()) { recycle(); return SocketState.CLOSED;
/** * Create the poller. With some versions of APR, the maximum poller size will * be 62 (recompiling APR is necessary to remove this limitation). */ protected void init() { pool = Pool.create(serverSockPool); int size = pollerSize / pollerThreadCount; int timeout = getKeepAliveTimeout(); if (timeout <= 0) { timeout = socketProperties.getSoTimeout(); } serverPollset = allocatePoller(size, pool, timeout); if (serverPollset == 0 && size > 1024) { size = 1024; serverPollset = allocatePoller(size, pool, timeout); } if (serverPollset == 0) { size = 62; serverPollset = allocatePoller(size, pool, timeout); } desc = new long[size * 2]; keepAliveCount = 0; addS = new long[size]; addCount = 0; }
public void run() { if (!deferAccept) { if (setSocketOptions(socket)) { getPoller().add(socket); } else { // Close socket and pool Socket.destroy(socket); } } else { // Process the request from this socket if (!setSocketOptions(socket) || handler.process(socket) == Handler.SocketState.CLOSED) { // Close socket and pool Socket.destroy(socket); } } socket = 0; }
/** * The number of seconds Tomcat will wait for a subsequent request * before closing the connection. */ public int getKeepAliveTimeout() { return endpoint.getKeepAliveTimeout(); } public void setKeepAliveTimeout(int timeout) { endpoint.setKeepAliveTimeout(timeout); }