# Class AbstractNetworkChannelEndpoint<S extends Channel, U extends NetworkChannel>

java.lang.Object
org.apache.tomcat.util.net.AbstractEndpoint<S,U>
org.apache.tomcat.util.net.AbstractNetworkChannelEndpoint<S,U>

Type Parameters:
  `S` - The channel type
  `U` - The network channel type

Direct Known Subclasses:
  `Nio2Endpoint, NioEndpoint`

public abstract class AbstractNetworkChannelEndpoint<S extends Channel, U extends NetworkChannel> extends AbstractEndpoint<S,U>
Provides a base implementation for endpoints that use a `NetworkChannel`.

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class AbstractEndpoint

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

- ## Field Summary

  ### Fields inherited from class AbstractEndpoint

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractNetworkChannelEndpoint()`
  Constructs a new endpoint.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract S`
  `createChannel(SocketBufferHandler buffer)`
  Creates the channel to be used by this endpoint.
  `protected final InetSocketAddress`
  `getLocalAddress()`
  Obtain the network address the server socket is bound to.
  `protected abstract NetworkChannel`
  `getServerSocket()`
  Returns the server socket used by this endpoint.

  ### Methods inherited from class AbstractEndpoint

  `addNegotiatedProtocol, addSslHostConfig, addSslHostConfig, awaitConnectionsClose, bind, checkSni, closeServerSocketGraceful, closeSocket, countDownConnection, countUpOrAwaitConnection, createExecutor, createSocketProcessor, createSSLContext, createSSLEngine, destroy, destroySocket, destroySsl, doCloseServerSocket, findSslHostConfigs, generateCertificateDebug, getAcceptCount, getAcceptorThreadPriority, getAddress, getAttribute, getBindOnInit, getBindState, getConnectionCount, getConnectionLinger, getConnections, getConnectionTimeout, getCurrentThreadCount, getCurrentThreadsBusy, getDaemon, getDefaultSSLHostConfigName, getDomain, getExecutor, getExecutorTerminationTimeoutMillis, getHandler, getId, getKeepAliveTimeout, getLocalPort, getLog, getLogCertificate, getMaxConnections, getMaxKeepAliveRequests, getMaxQueueSize, getMaxThreads, getMinSpareThreads, getName, getPort, getPortOffset, getPortWithOffset, getProperty, getSniParseLimit, getSocketProperties, getSSLHostConfig, getSslImplementation, getSslImplementationName, getStrictSni, getTcpNoDelay, getThreadPriority, getThreadsMaxIdleTime, getUseAsyncIO, getUseSendfile, getUseVirtualThreads, getUtilityExecutor, hasNegotiableProtocols, init, initialiseSsl, initializeConnectionLatch, isPaused, isRunning, isSSLEnabled, logCertificate, pause, processSocket, releaseSSLContext, reloadSslHostConfig, reloadSslHostConfigs, removeSslHostConfig, resume, serverSocketAccept, setAcceptCount, setAcceptorThreadPriority, setAddress, setAttribute, setBindOnInit, setConnectionLinger, setConnectionTimeout, setDaemon, setDefaultSSLHostConfigName, setDomain, setExecutor, setExecutorTerminationTimeoutMillis, setHandler, setKeepAliveTimeout, setMaxConnections, setMaxKeepAliveRequests, setMaxQueueSize, setMaxThreads, setMinSpareThreads, setName, setPort, setPortOffset, setProperty, setSniParseLimit, setSocketOptions, setSSLEnabled, setSslImplementationName, setStrictSni, setTcpNoDelay, setThreadPriority, setThreadsMaxIdleTime, setUseAsyncIO, setUseSendfile, setUseVirtualThreads, setUtilityExecutor, shutdownExecutor, start, startAcceptorThread, startInternal, stop, stopInternal, toTimeout, unbind, unlockAccept`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### AbstractNetworkChannelEndpoint

    public AbstractNetworkChannelEndpoint()
    Constructs a new endpoint.

- ## Method Details

  - ### getServerSocket

    protected abstract NetworkChannel getServerSocket()
    Returns the server socket used by this endpoint.
    Returns:
      the server socket

  - ### createChannel

    protected abstract S createChannel(SocketBufferHandler buffer)
    Creates the channel to be used by this endpoint.
    Parameters:
      `buffer` - The buffer handler to use for the channel
    Returns:
      the created channel

  - ### getLocalAddress

    protected final InetSocketAddress getLocalAddress() throws IOException
    Description copied from class: `AbstractEndpoint`
    Obtain the network address the server socket is bound to. This primarily exists to enable the correct address to be used when unlocking the server socket since it removes the guess-work involved if no address is specifically set.
    Specified by:
      `getLocalAddress` in class `AbstractEndpoint<S extends Channel, U extends NetworkChannel>`
    Returns:
      The network address that the server socket is listening on or null if the server socket is not currently bound.
    Throws:
      `IOException` - If there is a problem determining the currently bound socket