Class NIOServerCnxn

java.lang.Object
org.apache.zookeeper.server.ServerCnxn
org.apache.zookeeper.server.NIOServerCnxn
All Implemented Interfaces:
Watcher
Direct Known Subclasses:
ControllableConnection

public class NIOServerCnxn extends ServerCnxn
This class handles communication with clients using NIO. There is one per client, but only one thread doing the communication.
  • Field Details

    • incomingBuffer

      protected ByteBuffer incomingBuffer
  • Constructor Details

  • Method Details

    • sendCloseSession

      public void sendCloseSession()
      Specified by:
      sendCloseSession in class ServerCnxn
    • sendBuffer

      public void sendBuffer(ByteBuffer... buffers)
      sendBuffer pushes a byte buffer onto the outgoing buffer queue for asynchronous writes.
    • isSelectable

      public boolean isSelectable()
    • disableSelectable

      public void disableSelectable()
    • enableSelectable

      public void enableSelectable()
    • isSocketOpen

      protected boolean isSocketOpen()
      Only used in order to allow testing
    • readRequest

      protected void readRequest() throws IOException
      Throws:
      IOException
    • disableRecv

      public void disableRecv(boolean waitDisableRecv)
    • enableRecv

      public void enableRecv()
    • getSessionTimeout

      public int getSessionTimeout()
    • toString

      public String toString()
      Used by "dump" 4-letter command to list all connection in cnxnExpiryMap
      Overrides:
      toString in class ServerCnxn
      See Also:
    • close

      public void close(ServerCnxn.DisconnectReason reason)
      Close the cnxn and remove it from the factory cnxns list.
      Specified by:
      close in class ServerCnxn
    • closeSock

      public static void closeSock(SocketChannel sock)
      Close resources associated with a sock.
    • sendResponse

      public int sendResponse(ReplyHeader h, Record r, String tag, String cacheKey, Stat stat, int opCode)
      Description copied from class: ServerCnxn
      Serializes a ZooKeeper response and enqueues it for sending. Serializes client response parts and enqueues them into outgoing queue. If both cache key and last modified zxid are provided, the serialized response is caсhed under the provided key, the last modified zxid is stored along with the value. A cache entry is invalidated if the provided last modified zxid is more recent than the stored one. Attention: this function is not thread safe, due to caching not being thread safe.
      Specified by:
      sendResponse in class ServerCnxn
      Parameters:
      h - reply header
      r - reply payload, can be null
      tag - Jute serialization tag, can be null
      cacheKey - Key for caching the serialized payload. A null value prevents caching.
      stat - Stat information for the the reply payload, used for cache invalidation. A value of 0 prevents caching.
      opCode - The op code appertains to the corresponding request of the response, used to decide which cache (e.g. read response cache, list of children response cache, ...) object to look up to when applicable.
    • process

      public void process(WatchedEvent event)
      Specified by:
      process in interface Watcher
      Specified by:
      process in class ServerCnxn
    • getSessionId

      public long getSessionId()
      Specified by:
      getSessionId in class ServerCnxn
    • setSessionId

      public void setSessionId(long sessionId)
    • setSessionTimeout

      public void setSessionTimeout(int sessionTimeout)
    • getInterestOps

      public int getInterestOps()
      Specified by:
      getInterestOps in class ServerCnxn
    • getRemoteSocketAddress

      public InetSocketAddress getRemoteSocketAddress()
      Specified by:
      getRemoteSocketAddress in class ServerCnxn
    • getSocketAddress

      public InetAddress getSocketAddress()
    • serverStats

      protected ServerStats serverStats()
      Specified by:
      serverStats in class ServerCnxn
    • isSecure

      public boolean isSecure()
      Specified by:
      isSecure in class ServerCnxn
    • getClientCertificateChain

      public Certificate[] getClientCertificateChain()
      Specified by:
      getClientCertificateChain in class ServerCnxn
    • setClientCertificateChain

      public void setClientCertificateChain(Certificate[] chain)
      Specified by:
      setClientCertificateChain in class ServerCnxn