# Class NioEndpoint

java.lang.Object
org.apache.tomcat.util.net.AbstractEndpoint<NioChannel, SocketChannel>
org.apache.tomcat.util.net.AbstractJsseEndpoint<NioChannel, SocketChannel>
org.apache.tomcat.util.net.NioEndpoint

public class NioEndpoint extends AbstractJsseEndpoint<NioChannel, SocketChannel>
NIO endpoint.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`NioEndpoint.NioSocketWrapper`
`class`
`NioEndpoint.Poller`
Poller class.
`static class`
`NioEndpoint.PollerEvent`
PollerEvent, cacheable object for poller events to avoid GC
`static class`
`NioEndpoint.SendfileData`
SendfileData class.
`protected class`
`NioEndpoint.SocketProcessor`
This class is the equivalent of the Worker, but will simply use in an external Executor thread pool.

### Nested classes/interfaces inherited from class AbstractEndpoint

`AbstractEndpoint.BindState, AbstractEndpoint.Handler<S>`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`OP_REGISTER`

### Fields inherited from class AbstractEndpoint

`acceptor, acceptorThreadCount, acceptorThreadPriority, attributes, connections, internalExecutor, negotiableProtocols, paused, processorCache, running, sm, socketProperties, sslHostConfigs, threadPriority`

## Constructor Summary

Constructors
Constructor
Description
`NioEndpoint()`

## Method Summary

Modifier and Type
Method
Description
`void`
`bind()`
Initialize the endpoint.
`protected SocketProcessorBase<NioChannel>`
`createSocketProcessor(SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event)`
`protected void`
`destroySocket(SocketChannel socket)`
Close the socket.
`protected void`
`doCloseServerSocket()`
Actually close the server socket but don't perform any other clean-up.
`boolean`
`getDeferAccept()`
Is deferAccept supported?
`String`
`getId()`
The default behavior is to identify connectors uniquely with address and port.
`int`
`getKeepAliveCount()`
Number of keep-alive sockets.
`protected Log`
`getLog()`
`protected Log`
`getLogCertificate()`
`protected SynchronizedStack<NioChannel>`
`getNioChannels()`
`protected NioEndpoint.Poller`
`getPoller()`
`int`
`getPollerThreadCount()`
Deprecated.
Will be removed in Tomcat 10.
`int`
`getPollerThreadPriority()`
`long`
`getSelectorTimeout()`
`protected NetworkChannel`
`getServerSocket()`
`protected CountDownLatch`
`getStopLatch()`
`String`
`getUnixDomainSocketPath()`
`String`
`getUnixDomainSocketPathPermissions()`
`boolean`
`getUseInheritedChannel()`
`protected void`
`initServerSocket()`
`protected SocketChannel`
`serverSocketAccept()`
`void`
`setPollerThreadCount(int pollerThreadCount)`
Deprecated.
Will be removed in Tomcat 10.
`void`
`setPollerThreadPriority(int pollerThreadPriority)`
`void`
`setSelectorTimeout(long timeout)`
`protected boolean`
`setSocketOptions(SocketChannel socket)`
Process the specified connection.
`protected void`
`setStopLatch(CountDownLatch stopLatch)`
`void`
`setUnixDomainSocketPath(String unixDomainSocketPath)`
`void`
`setUnixDomainSocketPathPermissions(String unixDomainSocketPathPermissions)`
`void`
`setUseInheritedChannel(boolean useInheritedChannel)`
`void`
`startInternal()`
Start the NIO endpoint, creating acceptor, poller threads.
`void`
`stopInternal()`
Stop the endpoint.
`void`
`unbind()`
Deallocate NIO memory pools, and close server socket.
`protected void`
`unlockAccept()`
Unlock the server socket acceptor threads using bogus connections.

### Methods inherited from class AbstractJsseEndpoint

`createSSLContext, createSSLEngine, getLocalAddress, getSniParseLimit, getSslImplementation, getSslImplementationName, initialiseSsl, isAlpnSupported, setDefaultSslHostConfig, setSniParseLimit, setSslImplementationName`

### Methods inherited from class AbstractEndpoint

`addNegotiatedProtocol, addSslHostConfig, addSslHostConfig, awaitConnectionsClose, closeServerSocketGraceful, closeSocket, countDownConnection, countUpOrAwaitConnection, createExecutor, destroy, destroySsl, findSslHostConfigs, generateCertificateDebug, getAcceptCount, getAcceptorThreadCount, getAcceptorThreadPriority, getAddress, getAttribute, getBindOnInit, getBindState, getConnectionCount, getConnectionLinger, getConnections, getConnectionTimeout, getCurrentThreadCount, getCurrentThreadsBusy, getDaemon, getDefaultSSLHostConfigName, getDomain, getExecutor, getExecutorTerminationTimeoutMillis, getHandler, getKeepAliveTimeout, getLocalPort, getMaxConnections, getMaxKeepAliveRequests, getMaxQueueSize, getMaxThreads, getMinSpareThreads, getName, getPort, getPortOffset, getPortWithOffset, getProperty, getSocketProperties, getSSLHostConfig, getTcpNoDelay, getThreadPriority, getThreadsMaxIdleTime, getUseAsyncIO, getUseSendfile, getUseVirtualThreads, getUtilityExecutor, hasNegotiableProtocols, init, initializeConnectionLatch, isPaused, isRunning, isSSLEnabled, logCertificate, pause, processSocket, releaseSSLContext, reloadSslHostConfig, reloadSslHostConfigs, removeSslHostConfig, resume, setAcceptCount, setAcceptorThreadCount, setAcceptorThreadPriority, setAddress, setAttribute, setBindOnInit, setConnectionLinger, setConnectionTimeout, setDaemon, setDefaultSSLHostConfigName, setDomain, setExecutor, setExecutorTerminationTimeoutMillis, setHandler, setKeepAliveTimeout, setMaxConnections, setMaxKeepAliveRequests, setMaxQueueSize, setMaxThreads, setMinSpareThreads, setName, setPort, setPortOffset, setProperty, setSSLEnabled, setTcpNoDelay, setThreadPriority, setThreadsMaxIdleTime, setUseAsyncIO, setUseSendfile, setUseVirtualThreads, setUtilityExecutor, shutdownExecutor, start, startAcceptorThread, stop, toTimeout`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### OP_REGISTER

public static final int OP_REGISTER

See Also:
  - Constant Field Values

## Constructor Details

### NioEndpoint

public NioEndpoint()

## Method Details

### setUseInheritedChannel

public void setUseInheritedChannel(boolean useInheritedChannel)

### getUseInheritedChannel

public boolean getUseInheritedChannel()

### getUnixDomainSocketPath

public String getUnixDomainSocketPath()

### setUnixDomainSocketPath

public void setUnixDomainSocketPath(String unixDomainSocketPath)

### getUnixDomainSocketPathPermissions

public String getUnixDomainSocketPathPermissions()

### setUnixDomainSocketPathPermissions

public void setUnixDomainSocketPathPermissions(String unixDomainSocketPathPermissions)

### setPollerThreadPriority

public void setPollerThreadPriority(int pollerThreadPriority)

### getPollerThreadPriority

public int getPollerThreadPriority()

### setPollerThreadCount

@Deprecated public void setPollerThreadCount(int pollerThreadCount)
Deprecated.
Will be removed in Tomcat 10.
NO-OP.

Parameters:
  `pollerThreadCount` - Unused

### getPollerThreadCount

@Deprecated public int getPollerThreadCount()
Deprecated.
Will be removed in Tomcat 10.
Always returns 1.

Returns:
  Always 1.

### setSelectorTimeout

public void setSelectorTimeout(long timeout)

### getSelectorTimeout

public long getSelectorTimeout()

### getDeferAccept

public boolean getDeferAccept()
Is deferAccept supported?

Specified by:
  `getDeferAccept` in class `AbstractEndpoint<NioChannel, SocketChannel>`

### getKeepAliveCount

public int getKeepAliveCount()
Number of keep-alive sockets.

Returns:
  The number of sockets currently in the keep-alive state waiting for the next request to be received on the socket

### getId

public String getId()
Description copied from class: `AbstractEndpoint`
The default behavior is to identify connectors uniquely with address and port. However, certain connectors are not using that and need some other identifier, which then can be used as a replacement.

Overrides:
  `getId` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Returns:
  the id

### bind

public void bind() throws Exception
Initialize the endpoint.

Specified by:
  `bind` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Throws:
  `Exception`

### initServerSocket

protected void initServerSocket() throws Exception

Throws:
  `Exception`

### startInternal

public void startInternal() throws Exception
Start the NIO endpoint, creating acceptor, poller threads.

Specified by:
  `startInternal` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Throws:
  `Exception`

### stopInternal

public void stopInternal()
Stop the endpoint. This will cause all processing threads to stop.

Specified by:
  `stopInternal` in class `AbstractEndpoint<NioChannel, SocketChannel>`

### unbind

public void unbind() throws Exception
Deallocate NIO memory pools, and close server socket.

Overrides:
  `unbind` in class `AbstractJsseEndpoint<NioChannel, SocketChannel>`
Throws:
  `Exception`

### doCloseServerSocket

protected void doCloseServerSocket() throws IOException
Description copied from class: `AbstractEndpoint`
Actually close the server socket but don't perform any other clean-up.

Specified by:
  `doCloseServerSocket` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Throws:
  `IOException` - If an error occurs closing the socket

### unlockAccept

protected void unlockAccept()
Description copied from class: `AbstractEndpoint`
Unlock the server socket acceptor threads using bogus connections.

Overrides:
  `unlockAccept` in class `AbstractEndpoint<NioChannel, SocketChannel>`

### getNioChannels

protected SynchronizedStack<NioChannel> getNioChannels()

### getPoller

protected NioEndpoint.Poller getPoller()

### getStopLatch

protected CountDownLatch getStopLatch()

### setStopLatch

protected void setStopLatch(CountDownLatch stopLatch)

### setSocketOptions

protected boolean setSocketOptions(SocketChannel socket)
Process the specified connection.

Specified by:
  `setSocketOptions` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Parameters:
  `socket` - The socket channel
Returns:
  `true` if the socket was correctly configured and processing may continue, `false` if the socket needs to be close immediately

### destroySocket

protected void destroySocket(SocketChannel socket)
Description copied from class: `AbstractEndpoint`
Close the socket. This is used when the connector is not in a state which allows processing the socket, or if there was an error which prevented the allocation of the socket wrapper.

Specified by:
  `destroySocket` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Parameters:
  `socket` - The newly accepted socket

### getServerSocket

protected NetworkChannel getServerSocket()

Specified by:
  `getServerSocket` in class `AbstractJsseEndpoint<NioChannel, SocketChannel>`

### serverSocketAccept

protected SocketChannel serverSocketAccept() throws Exception

Specified by:
  `serverSocketAccept` in class `AbstractEndpoint<NioChannel, SocketChannel>`
Throws:
  `Exception`

### getLog

protected Log getLog()

Specified by:
  `getLog` in class `AbstractEndpoint<NioChannel, SocketChannel>`

### getLogCertificate

protected Log getLogCertificate()

Overrides:
  `getLogCertificate` in class `AbstractEndpoint<NioChannel, SocketChannel>`

### createSocketProcessor

protected SocketProcessorBase<NioChannel> createSocketProcessor(SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event)

Specified by:
  `createSocketProcessor` in class `AbstractEndpoint<NioChannel, SocketChannel>`