Class NioEndpoint


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

    • OP_REGISTER

      public static final int OP_REGISTER
      Custom operation for registering interest in a socket.
      See Also:
  • Constructor Details

    • NioEndpoint

      public NioEndpoint()
      Default constructor.
  • Method Details

    • setUseInheritedChannel

      public void setUseInheritedChannel(boolean useInheritedChannel)
      Sets whether to use an inherited channel.
      Parameters:
      useInheritedChannel - true to use System.inheritedChannel
    • getUseInheritedChannel

      public boolean getUseInheritedChannel()
      Returns whether an inherited channel is used.
      Returns:
      true if System.inheritedChannel is used
    • getUnixDomainSocketPath

      public String getUnixDomainSocketPath()
      Returns the Unix domain socket path.
      Returns:
      the Unix domain socket path
    • setUnixDomainSocketPath

      public void setUnixDomainSocketPath(String unixDomainSocketPath)
      Sets the Unix domain socket path.
      Parameters:
      unixDomainSocketPath - the path to the Unix domain socket
    • getUnixDomainSocketPathPermissions

      public String getUnixDomainSocketPathPermissions()
      Returns the Unix domain socket path permissions.
      Returns:
      the permissions string
    • setUnixDomainSocketPathPermissions

      public void setUnixDomainSocketPathPermissions(String unixDomainSocketPathPermissions)
      Sets the Unix domain socket path permissions.
      Parameters:
      unixDomainSocketPathPermissions - the permissions string
    • setPollerThreadPriority

      public void setPollerThreadPriority(int pollerThreadPriority)
      Sets the poller thread priority.
      Parameters:
      pollerThreadPriority - the thread priority
    • getPollerThreadPriority

      public int getPollerThreadPriority()
      Returns the poller thread priority.
      Returns:
      the thread priority
    • setSelectorTimeout

      public void setSelectorTimeout(long timeout)
      Sets the selector timeout.
      Parameters:
      timeout - The timeout in milliseconds
    • getSelectorTimeout

      public long getSelectorTimeout()
      Returns the selector timeout.
      Returns:
      the timeout in milliseconds
    • 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 - If an error occurs during binding
    • initServerSocket

      protected void initServerSocket() throws Exception
      Initializes the server socket channel.
      Throws:
      Exception - If initialization fails
    • startInternal

      public void startInternal() throws Exception
      Start the NIO endpoint, creating acceptor, poller threads.
      Specified by:
      startInternal in class AbstractEndpoint<NioChannel, SocketChannel>
      Throws:
      Exception - If an error occurs during startup
    • 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()
      Returns the NIO channel cache.
      Returns:
      the channel cache stack
    • getPoller

      protected NioEndpoint.Poller getPoller()
      Returns the poller instance.
      Returns:
      the poller
    • getStopLatch

      protected CountDownLatch getStopLatch()
      Returns the stop latch.
      Returns:
      the stop latch
    • setStopLatch

      protected void setStopLatch(CountDownLatch stopLatch)
      Sets the stop latch.
      Parameters:
      stopLatch - the stop latch
    • 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
      Description copied from class: AbstractEndpoint
      Accept a connection from the server socket.
      Specified by:
      serverSocketAccept in class AbstractEndpoint<NioChannel, SocketChannel>
      Returns:
      The accepted socket
      Throws:
      Exception - If an error occurs during accept
    • getLog

      protected Log getLog()
      Description copied from class: AbstractEndpoint
      Get the logger for this endpoint.
      Specified by:
      getLog in class AbstractEndpoint<NioChannel, SocketChannel>
      Returns:
      The logger
    • getLogCertificate

      protected Log getLogCertificate()
      Description copied from class: AbstractEndpoint
      Get the logger for certificate-related messages.
      Overrides:
      getLogCertificate in class AbstractEndpoint<NioChannel, SocketChannel>
      Returns:
      The logger (defaults to AbstractEndpoint.getLog())
    • createSocketProcessor

      protected SocketProcessorBase<NioChannel> createSocketProcessor(SocketWrapperBase<NioChannel> socketWrapper, SocketEvent event)
      Description copied from class: AbstractEndpoint
      Create a socket processor for the given socket wrapper.
      Specified by:
      createSocketProcessor in class AbstractEndpoint<NioChannel, SocketChannel>
      Parameters:
      socketWrapper - The socket wrapper to process
      event - The socket event
      Returns:
      The socket processor