S
- The type for the sockets managed by this endpoint.public abstract class AbstractEndpoint<S> extends Object
Modifier and Type | Class and Description |
---|---|
static class |
AbstractEndpoint.Acceptor |
protected static class |
AbstractEndpoint.BindState |
static interface |
AbstractEndpoint.Handler<S> |
Modifier and Type | Field and Description |
---|---|
protected AbstractEndpoint.Acceptor[] |
acceptors
Threads used to accept new connections and pass them to worker threads.
|
protected int |
acceptorThreadCount
Acceptor thread count.
|
protected int |
acceptorThreadPriority
Priority of the acceptor threads.
|
protected HashMap<String,Object> |
attributes
Attributes provide a way for configuration to be passed to sub-components
without the
ProtocolHandler being aware of the
properties available on those sub-components. |
protected boolean |
internalExecutor
Are we using an internal executor
|
protected List<String> |
negotiableProtocols |
protected boolean |
paused
Will be set to true whenever the endpoint is paused.
|
protected boolean |
running
Running state of the endpoint.
|
protected static StringManager |
sm |
protected SocketProperties |
socketProperties
Socket properties
|
protected Map<String,SSLHostConfig> |
sslHostConfigs |
protected int |
threadPriority
Priority of the worker threads.
|
Constructor and Description |
---|
AbstractEndpoint() |
Modifier and Type | Method and Description |
---|---|
void |
addNegotiatedProtocol(String negotiableProtocol) |
void |
addSslHostConfig(SSLHostConfig sslHostConfig) |
abstract void |
bind() |
protected long |
countDownConnection() |
protected void |
countUpOrAwaitConnection() |
protected abstract AbstractEndpoint.Acceptor |
createAcceptor()
Hook to allow Endpoints to provide a specific Acceptor implementation.
|
void |
createExecutor() |
void |
destroy() |
SSLHostConfig[] |
findSslHostConfigs() |
int |
getAcceptorThreadCount() |
int |
getAcceptorThreadPriority() |
InetAddress |
getAddress() |
Object |
getAttribute(String key)
Used by sub-components to retrieve configuration information.
|
int |
getBacklog() |
boolean |
getBindOnInit() |
long |
getConnectionCount()
Return the current count of connections handled by this endpoint, if the
connections are counted (which happens when the maximum count of
connections is limited), or
-1 if they are not. |
int |
getCurrentThreadCount()
Return the amount of threads that are managed by the pool.
|
int |
getCurrentThreadsBusy()
Return the amount of threads that are in use
|
boolean |
getDaemon() |
String |
getDefaultSSLHostConfigName() |
protected abstract boolean |
getDeferAccept() |
Executor |
getExecutor() |
long |
getExecutorTerminationTimeoutMillis() |
AbstractEndpoint.Handler<S> |
getHandler() |
int |
getKeepAliveTimeout() |
abstract int |
getLocalPort() |
protected abstract Log |
getLog() |
int |
getMaxConnections() |
int |
getMaxHeaderCount() |
int |
getMaxKeepAliveRequests() |
int |
getMaxThreads() |
protected int |
getMaxThreadsExecutor(boolean useExecutor) |
int |
getMinSpareThreads() |
String |
getName() |
int |
getPort() |
String |
getProperty(String name) |
SocketProperties |
getSocketProperties() |
int |
getSoLinger()
Socket linger.
|
int |
getSoTimeout()
Socket timeout.
|
protected abstract SSLHostConfig.Type |
getSslConfigType() |
protected SSLHostConfig |
getSSLHostConfig(String sniHostName) |
boolean |
getTcpNoDelay()
Socket TCP no delay.
|
int |
getThreadPriority() |
boolean |
getUseSendfile() |
protected int |
handleExceptionWithDelay(int currentErrorDelay)
Provides a common approach for sub-classes to handle exceptions where a
delay is required to prevent a Thread from entering a tight loop which
will consume CPU and may also trigger large amounts of logging.
|
boolean |
hasNegotiableProtocols() |
void |
init() |
protected LimitLatch |
initializeConnectionLatch() |
boolean |
isPaused() |
boolean |
isRunning() |
boolean |
isSSLEnabled() |
void |
pause()
Pause the endpoint, which will stop it accepting new connections.
|
abstract void |
processSocket(SocketWrapperBase<S> socketWrapper,
SocketEvent socketStatus,
boolean dispatch)
Process the given SocketWrapper with the given status.
|
protected void |
releaseConnectionLatch() |
void |
resume()
Resume the endpoint, which will make it start accepting new connections
again.
|
void |
setAcceptorThreadCount(int acceptorThreadCount) |
void |
setAcceptorThreadPriority(int acceptorThreadPriority) |
void |
setAddress(InetAddress address) |
void |
setAttribute(String name,
Object value)
Generic property setter called when a property for which a specific
setter already exists within the
ProtocolHandler needs to be made available to
sub-components. |
void |
setBacklog(int backlog) |
void |
setBindOnInit(boolean b) |
void |
setDaemon(boolean b) |
void |
setDefaultSSLHostConfigName(String defaultSSLHostConfigName) |
void |
setExecutor(Executor executor) |
void |
setExecutorTerminationTimeoutMillis(long executorTerminationTimeoutMillis) |
void |
setHandler(AbstractEndpoint.Handler<S> handler) |
void |
setKeepAliveTimeout(int keepAliveTimeout) |
void |
setMaxConnections(int maxCon) |
void |
setMaxHeaderCount(int maxHeaderCount) |
void |
setMaxKeepAliveRequests(int maxKeepAliveRequests) |
void |
setMaxThreads(int maxThreads) |
void |
setMinSpareThreads(int minSpareThreads) |
void |
setName(String name) |
void |
setPort(int port) |
boolean |
setProperty(String name,
String value) |
void |
setSoLinger(int soLinger) |
void |
setSoTimeout(int soTimeout) |
void |
setSSLEnabled(boolean SSLEnabled) |
void |
setTcpNoDelay(boolean tcpNoDelay) |
void |
setThreadPriority(int threadPriority) |
void |
setUseSendfile(boolean useSendfile) |
void |
shutdownExecutor() |
void |
start() |
protected void |
startAcceptorThreads() |
abstract void |
startInternal() |
void |
stop() |
abstract void |
stopInternal() |
abstract void |
unbind() |
protected void |
unlockAccept()
Unlock the server socket accept using a bogus connection.
|
protected static final StringManager sm
protected volatile boolean running
protected volatile boolean paused
protected volatile boolean internalExecutor
protected SocketProperties socketProperties
protected AbstractEndpoint.Acceptor[] acceptors
protected Map<String,SSLHostConfig> sslHostConfigs
protected int acceptorThreadCount
protected int acceptorThreadPriority
protected int threadPriority
protected HashMap<String,Object> attributes
ProtocolHandler
being aware of the
properties available on those sub-components.public SocketProperties getSocketProperties()
public String getDefaultSSLHostConfigName()
public void setDefaultSSLHostConfigName(String defaultSSLHostConfigName)
public void addSslHostConfig(SSLHostConfig sslHostConfig)
public SSLHostConfig[] findSslHostConfigs()
protected abstract SSLHostConfig.Type getSslConfigType()
protected SSLHostConfig getSSLHostConfig(String sniHostName)
public boolean getUseSendfile()
public void setUseSendfile(boolean useSendfile)
public long getExecutorTerminationTimeoutMillis()
public void setExecutorTerminationTimeoutMillis(long executorTerminationTimeoutMillis)
public void setAcceptorThreadCount(int acceptorThreadCount)
public int getAcceptorThreadCount()
public void setAcceptorThreadPriority(int acceptorThreadPriority)
public int getAcceptorThreadPriority()
public void setMaxConnections(int maxCon)
public int getMaxConnections()
public long getConnectionCount()
-1
if they are not. This
property is added here so that this value can be inspected through JMX.
It is visible on "ThreadPool" MBean.
The count is incremented by the Acceptor before it tries to accept a new connection. Until the limit is reached and thus the count cannot be incremented, this value is more by 1 (the count of acceptors) than the actual count of connections that are being served.
public void setExecutor(Executor executor)
public Executor getExecutor()
public int getPort()
public void setPort(int port)
public abstract int getLocalPort()
public InetAddress getAddress()
public void setAddress(InetAddress address)
public void setBacklog(int backlog)
public int getBacklog()
public boolean getBindOnInit()
public void setBindOnInit(boolean b)
public int getKeepAliveTimeout()
public void setKeepAliveTimeout(int keepAliveTimeout)
public boolean getTcpNoDelay()
public void setTcpNoDelay(boolean tcpNoDelay)
public int getSoLinger()
public void setSoLinger(int soLinger)
public int getSoTimeout()
public void setSoTimeout(int soTimeout)
public boolean isSSLEnabled()
public void setSSLEnabled(boolean SSLEnabled)
public int getMinSpareThreads()
public void setMinSpareThreads(int minSpareThreads)
public void setMaxThreads(int maxThreads)
public int getMaxThreads()
protected int getMaxThreadsExecutor(boolean useExecutor)
public int getMaxKeepAliveRequests()
public void setMaxKeepAliveRequests(int maxKeepAliveRequests)
public int getMaxHeaderCount()
public void setMaxHeaderCount(int maxHeaderCount)
public void setName(String name)
public String getName()
public void setDaemon(boolean b)
public boolean getDaemon()
public void setThreadPriority(int threadPriority)
public int getThreadPriority()
protected abstract boolean getDeferAccept()
public void addNegotiatedProtocol(String negotiableProtocol)
public boolean hasNegotiableProtocols()
public void setHandler(AbstractEndpoint.Handler<S> handler)
public AbstractEndpoint.Handler<S> getHandler()
public void setAttribute(String name, Object value)
ProtocolHandler
needs to be made available to
sub-components. The specific setter will call this method to populate the
attributes.name
- Name of property to setvalue
- The value to set the property topublic Object getAttribute(String key)
key
- The name of the property for which the value should be
retrievedpublic int getCurrentThreadCount()
public int getCurrentThreadsBusy()
public boolean isRunning()
public boolean isPaused()
public void createExecutor()
public void shutdownExecutor()
protected void unlockAccept()
public abstract void processSocket(SocketWrapperBase<S> socketWrapper, SocketEvent socketStatus, boolean dispatch)
socketWrapper
- The socket wrapper to processsocketStatus
- The input status to the processingdispatch
- Should the processing be performed on a new
container threadprotected final void startAcceptorThreads()
protected abstract AbstractEndpoint.Acceptor createAcceptor()
public void pause()
public void resume()
protected abstract Log getLog()
protected LimitLatch initializeConnectionLatch()
protected void releaseConnectionLatch()
protected void countUpOrAwaitConnection() throws InterruptedException
InterruptedException
protected long countDownConnection()
protected int handleExceptionWithDelay(int currentErrorDelay)
currentErrorDelay
- The current delay being applied on failureCopyright © 2000-2016 Apache Software Foundation. All Rights Reserved.