NioEndpoint (Apache Tomcat 9.0.111 API Documentation)
Description: declaration: package: org.apache.tomcat.util.net, class: NioEndpoint

# 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>`