Package org.apache.zookeeper.server
Class NIOServerCnxn
java.lang.Object
org.apache.zookeeper.server.ServerCnxn
org.apache.zookeeper.server.NIOServerCnxn
- All Implemented Interfaces:
Watcher
- Direct Known Subclasses:
ControllableConnection
This class handles communication with clients using NIO. There is one per
client, but only one thread doing the communication.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.zookeeper.server.ServerCnxn
ServerCnxn.CloseRequestException, ServerCnxn.DisconnectReason, ServerCnxn.EndOfStreamExceptionNested classes/interfaces inherited from interface org.apache.zookeeper.Watcher
Watcher.Event, Watcher.WatcherType -
Field Summary
FieldsFields inherited from class org.apache.zookeeper.server.ServerCnxn
count, disconnectReason, established, lastCxid, lastLatency, lastOp, lastResponseTime, lastZxid, maxLatency, me, minLatency, packetsReceived, packetsSent, totalLatency, zooKeeperSaslServer -
Constructor Summary
ConstructorsConstructorDescriptionNIOServerCnxn(ZooKeeperServer zk, SocketChannel sock, SelectionKey sk, NIOServerCnxnFactory factory, NIOServerCnxnFactory.SelectorThread selectorThread) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose(ServerCnxn.DisconnectReason reason) Close the cnxn and remove it from the factory cnxns list.static voidcloseSock(SocketChannel sock) Close resources associated with a sock.voiddisableRecv(boolean waitDisableRecv) voidvoidvoidintlongintbooleanisSecure()booleanprotected booleanOnly used in order to allow testingvoidprocess(WatchedEvent event) protected voidvoidsendBuffer(ByteBuffer... buffers) sendBuffer pushes a byte buffer onto the outgoing buffer queue for asynchronous writes.voidintsendResponse(ReplyHeader h, Record r, String tag, String cacheKey, Stat stat, int opCode) Serializes a ZooKeeper response and enqueues it for sending.protected ServerStatsvoidsetClientCertificateChain(Certificate[] chain) voidsetSessionId(long sessionId) voidsetSessionTimeout(int sessionTimeout) toString()Used by "dump" 4-letter command to list all connection in cnxnExpiryMapMethods inherited from class org.apache.zookeeper.server.ServerCnxn
addAuthInfo, cleanupWriterSocket, decrOutstandingAndCheckThrottle, dumpConnectionInfo, getAuthInfo, getAvgLatency, getConnectionInfo, getEstablished, getHostAddress, getLastCxid, getLastLatency, getLastOperation, getLastResponseTime, getLastZxid, getMaxLatency, getMinLatency, getOutstandingRequests, getPacketsReceived, getPacketsSent, getSessionIdHex, incrOutstandingAndCheckThrottle, incrPacketsReceived, incrPacketsSent, isInvalid, isStale, isZKServerRunning, packetReceived, packetSent, removeAuthInfo, resetStats, sendResponse, serialize, serializeRecord, setInvalid, setStale, updateStatsForResponse
-
Field Details
-
incomingBuffer
-
-
Constructor Details
-
NIOServerCnxn
public NIOServerCnxn(ZooKeeperServer zk, SocketChannel sock, SelectionKey sk, NIOServerCnxnFactory factory, NIOServerCnxnFactory.SelectorThread selectorThread) throws IOException - Throws:
IOException
-
-
Method Details
-
sendCloseSession
public void sendCloseSession()- Specified by:
sendCloseSessionin classServerCnxn
-
sendBuffer
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
- Throws:
IOException
-
disableRecv
public void disableRecv(boolean waitDisableRecv) -
enableRecv
public void enableRecv() -
getSessionTimeout
public int getSessionTimeout() -
toString
Used by "dump" 4-letter command to list all connection in cnxnExpiryMap- Overrides:
toStringin classServerCnxn- See Also:
-
close
Close the cnxn and remove it from the factory cnxns list.- Specified by:
closein classServerCnxn
-
closeSock
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:ServerCnxnSerializes 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:
sendResponsein classServerCnxn- Parameters:
h- reply headerr- reply payload, can be nulltag- Jute serialization tag, can be nullcacheKey- 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
- Specified by:
processin interfaceWatcher- Specified by:
processin classServerCnxn
-
getSessionId
public long getSessionId()- Specified by:
getSessionIdin classServerCnxn
-
setSessionId
public void setSessionId(long sessionId) -
setSessionTimeout
public void setSessionTimeout(int sessionTimeout) -
getInterestOps
public int getInterestOps()- Specified by:
getInterestOpsin classServerCnxn
-
getRemoteSocketAddress
- Specified by:
getRemoteSocketAddressin classServerCnxn
-
getSocketAddress
-
serverStats
- Specified by:
serverStatsin classServerCnxn
-
isSecure
public boolean isSecure()- Specified by:
isSecurein classServerCnxn
-
getClientCertificateChain
- Specified by:
getClientCertificateChainin classServerCnxn
-
setClientCertificateChain
- Specified by:
setClientCertificateChainin classServerCnxn
-