Class NioEndpoint


  • public class NioEndpoint
    extends AbstractJsseEndpoint<NioChannel,​java.nio.channels.SocketChannel>
    NIO tailored thread pool, providing the following services:
    • Socket acceptor thread
    • Socket poller thread
    • Worker threads pool
    TODO: Consider using the virtual machine's thread pool.
    Author:
    Mladen Turk, Remy Maucherat
    • Constructor Detail

      • NioEndpoint

        public NioEndpoint()
    • Method Detail

      • setUseInheritedChannel

        public void setUseInheritedChannel​(boolean useInheritedChannel)
      • getUseInheritedChannel

        public boolean getUseInheritedChannel()
      • getUnixDomainSocketPath

        public java.lang.String getUnixDomainSocketPath()
      • setUnixDomainSocketPath

        public void setUnixDomainSocketPath​(java.lang.String unixDomainSocketPath)
      • getUnixDomainSocketPathPermissions

        public java.lang.String getUnixDomainSocketPathPermissions()
      • setUnixDomainSocketPathPermissions

        public void setUnixDomainSocketPathPermissions​(java.lang.String unixDomainSocketPathPermissions)
      • setPollerThreadPriority

        public void setPollerThreadPriority​(int pollerThreadPriority)
      • getPollerThreadPriority

        public int getPollerThreadPriority()
      • setSelectorTimeout

        public void setSelectorTimeout​(long timeout)
      • getSelectorTimeout

        public long getSelectorTimeout()
      • 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 java.lang.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,​java.nio.channels.SocketChannel>
        Returns:
        the id
      • bind

        public void bind()
                  throws java.lang.Exception
        Initialize the endpoint.
        Specified by:
        bind in class AbstractEndpoint<NioChannel,​java.nio.channels.SocketChannel>
        Throws:
        java.lang.Exception
      • initServerSocket

        protected void initServerSocket()
                                 throws java.lang.Exception
        Throws:
        java.lang.Exception
      • startInternal

        public void startInternal()
                           throws java.lang.Exception
        Start the NIO endpoint, creating acceptor, poller threads.
        Specified by:
        startInternal in class AbstractEndpoint<NioChannel,​java.nio.channels.SocketChannel>
        Throws:
        java.lang.Exception
      • stopInternal

        public void stopInternal()
        Stop the endpoint. This will cause all processing threads to stop.
        Specified by:
        stopInternal in class AbstractEndpoint<NioChannel,​java.nio.channels.SocketChannel>
      • unbind

        public void unbind()
                    throws java.lang.Exception
        Deallocate NIO memory pools, and close server socket.
        Overrides:
        unbind in class AbstractJsseEndpoint<NioChannel,​java.nio.channels.SocketChannel>
        Throws:
        java.lang.Exception
      • doCloseServerSocket

        protected void doCloseServerSocket()
                                    throws java.io.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,​java.nio.channels.SocketChannel>
        Throws:
        java.io.IOException - If an error occurs closing the socket
      • getStopLatch

        protected java.util.concurrent.CountDownLatch getStopLatch()
      • setStopLatch

        protected void setStopLatch​(java.util.concurrent.CountDownLatch stopLatch)
      • setSocketOptions

        protected boolean setSocketOptions​(java.nio.channels.SocketChannel socket)
        Process the specified connection.
        Specified by:
        setSocketOptions in class AbstractEndpoint<NioChannel,​java.nio.channels.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​(java.nio.channels.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,​java.nio.channels.SocketChannel>
        Parameters:
        socket - The newly accepted socket
      • serverSocketAccept

        protected java.nio.channels.SocketChannel serverSocketAccept()
                                                              throws java.lang.Exception
        Specified by:
        serverSocketAccept in class AbstractEndpoint<NioChannel,​java.nio.channels.SocketChannel>
        Throws:
        java.lang.Exception