Class ClientCnxn


  • public class ClientCnxn
    extends java.lang.Object
    This class manages the socket i/o for the client. ClientCnxn maintains a list of available servers to connect to and "transparently" switches servers it is connected to as needed.
    • Constructor Detail

      • ClientCnxn

        public ClientCnxn​(java.lang.String chrootPath,
                          HostProvider hostProvider,
                          int sessionTimeout,
                          ZKClientConfig clientConfig,
                          Watcher defaultWatcher,
                          org.apache.zookeeper.ClientCnxnSocket clientCnxnSocket,
                          boolean canBeReadOnly)
                   throws java.io.IOException
        Creates a connection object. The actual network connect doesn't get established until needed. The start() instance method must be called subsequent to construction.
        Parameters:
        chrootPath - the chroot of this client. Should be removed from this Class in ZOOKEEPER-838
        hostProvider - the list of ZooKeeper servers to connect to
        sessionTimeout - the timeout for connections.
        clientConfig - the client configuration.
        defaultWatcher - default watcher for this connection
        clientCnxnSocket - the socket implementation used (e.g. NIO/Netty)
        canBeReadOnly - whether the connection is allowed to go to read-only mode in case of partitioning
        Throws:
        java.io.IOException
      • ClientCnxn

        public ClientCnxn​(java.lang.String chrootPath,
                          HostProvider hostProvider,
                          int sessionTimeout,
                          ZKClientConfig clientConfig,
                          Watcher defaultWatcher,
                          org.apache.zookeeper.ClientCnxnSocket clientCnxnSocket,
                          long sessionId,
                          byte[] sessionPasswd,
                          boolean canBeReadOnly)
                   throws java.io.IOException
        Creates a connection object. The actual network connect doesn't get established until needed. The start() instance method must be called subsequent to construction.
        Parameters:
        chrootPath - the chroot of this client. Should be removed from this Class in ZOOKEEPER-838
        hostProvider - the list of ZooKeeper servers to connect to
        sessionTimeout - the timeout for connections.
        clientConfig - the client configuration.
        defaultWatcher - default watcher for this connection
        clientCnxnSocket - the socket implementation used (e.g. NIO/Netty)
        sessionId - session id if re-establishing session
        sessionPasswd - session passwd if re-establishing session
        canBeReadOnly - whether the connection is allowed to go to read-only mode in case of partitioning
        Throws:
        java.io.IOException - in cases of broken network
    • Method Detail

      • getSessionId

        public long getSessionId()
      • getSessionPasswd

        public byte[] getSessionPasswd()
      • getSessionTimeout

        public int getSessionTimeout()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • start

        public void start()
      • isInEventThread

        public static boolean isInEventThread()
        Tests that current thread is the main event loop. This method is useful only for tests inside ZooKeeper project it is not a public API intended for use by external applications.
        Returns:
        true if Thread.currentThread() is an EventThread.
      • finishPacket

        protected void finishPacket​(org.apache.zookeeper.ClientCnxn.Packet p)
      • onConnecting

        protected void onConnecting​(java.net.InetSocketAddress addr)
      • getLastZxid

        public long getLastZxid()
      • disconnect

        public void disconnect()
        Shutdown the send/event threads. This method should not be called directly - rather it should be called as part of close operation. This method is primarily here to allow the tests to verify disconnection behavior.
      • close

        public void close()
                   throws java.io.IOException
        Close the connection, which includes; send session disconnect to the server, shutdown the send/event threads.
        Throws:
        java.io.IOException
      • getXid

        public int getXid()
      • saslCompleted

        public void saslCompleted()
      • sendPacket

        public void sendPacket​(Record request,
                               Record response,
                               AsyncCallback cb,
                               int opCode)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • addAuthInfo

        public void addAuthInfo​(java.lang.String scheme,
                                byte[] auth)