Package org.xbill.DNS

Class NioClient

java.lang.Object
org.xbill.DNS.NioClient
Direct Known Subclasses:
NioTcpClient, NioUdpClient

public abstract class NioClient extends Object
Manages the network I/O for the SimpleResolver. It is mostly an implementation detail of dnsjava and the only method intended to be called is close() - and only if dnsjava is used in an application container like Tomcat. In a normal JVM setup close() is called by a shutdown hook.

The following configuration parameter is available:

"dnsjava.nio.selector_timeout"
Set selector timeout in milliseconds. Default/Max 1000, Min 1.
"dnsjava.nio.register_shutdown_hook"
Register Shutdown Hook termination of NIO. Default True.
Since:
3.4
  • Field Details

    • SELECTOR_TIMEOUT_PROPERTY

      static final String SELECTOR_TIMEOUT_PROPERTY
      See Also:
    • REGISTER_SHUTDOWN_HOOK_PROPERTY

      static final String REGISTER_SHUTDOWN_HOOK_PROPERTY
      See Also:
    • NIO_CLIENT_LOCK

      private static final Object NIO_CLIENT_LOCK
    • packetLogger

      private static PacketLogger packetLogger
      Packet logger, if available.
    • TIMEOUT_TASKS

      private static final Runnable[] TIMEOUT_TASKS
    • TCP_REGISTRATIONS_TASK

      private static Consumer<Selector> TCP_REGISTRATIONS_TASK
    • UDP_REGISTRATIONS_TASK

      private static Consumer<Selector> UDP_REGISTRATIONS_TASK
    • CLOSE_TASKS

      private static final Runnable[] CLOSE_TASKS
    • selectorThread

      private static Thread selectorThread
    • closeThread

      private static Thread closeThread
    • selector

      private static volatile Selector selector
    • run

      private static volatile boolean run
    • closeDone

      private static volatile boolean closeDone
  • Constructor Details

    • NioClient

      public NioClient()
  • Method Details

    • selector

      static Selector selector() throws IOException
      Throws:
      IOException
    • close

      public static void close()
      Shutdown the network I/O used by the SimpleResolver.
      Since:
      3.4.0
    • close

      private static void close(boolean fromHook)
    • runSelector

      static void runSelector()
    • runClose

      private static void runClose()
    • setTimeoutTask

      static void setTimeoutTask(Runnable r, boolean isTcpClient)
    • setRegistrationsTask

      static void setRegistrationsTask(Consumer<Selector> r, boolean isTcpClient)
    • setCloseTask

      static void setCloseTask(Runnable r, boolean isTcpClient)
    • addTask

      private static void addTask(Runnable[] tasks, Runnable r, boolean isTcpClient)
    • runTasks

      private static void runTasks(Runnable[] runnables)
    • runRegistrationTasks

      private static void runRegistrationTasks()
    • processReadyKeys

      private static void processReadyKeys()
    • verboseLog

      static void verboseLog(String prefix, SocketAddress local, SocketAddress remote, ByteBuffer data)
    • verboseLog

      static void verboseLog(String prefix, SocketAddress local, SocketAddress remote, byte[] data)
    • setPacketLogger

      static void setPacketLogger(PacketLogger logger)