# 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