# Class ControllableConnection

java.lang.Object
org.apache.zookeeper.server.ServerCnxn
org.apache.zookeeper.server.NIOServerCnxn
org.apache.zookeeper.server.controller.ControllableConnection

All Implemented Interfaces:
  `ServerWatcher, Watcher`

public class ControllableConnection extends NIOServerCnxn
Extension of NIOServerCnxn which can inject changes per controller commands. Similar extensions can implement on top of NettyServerCnxn as well.

## Nested Class Summary

### Nested classes/interfaces inherited from class ServerCnxn

`ServerCnxn.CloseRequestException, ServerCnxn.DisconnectReason, ServerCnxn.EndOfStreamException`

### Nested classes/interfaces inherited from interface Watcher

`Watcher.Event, Watcher.WatcherType`

## Field Summary

### Fields inherited from class NIOServerCnxn

`incomingBuffer`

### Fields inherited from class ServerCnxn

`count, disconnectReason, established, lastCxid, lastLatency, lastOp, lastResponseTime, lastZxid, maxLatency, me, minLatency, packetsReceived, packetsSent, protocolManager, totalLatency, zooKeeperSaslServer`

## Constructor Summary

Constructors
Constructor
Description
`ControllableConnection(ZooKeeperServer zk, SocketChannel sock, SelectionKey sk, NIOServerCnxnFactory factory, NIOServerCnxnFactory.SelectorThread selectorThread)`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`readRequest()`
`int`
`sendResponse(ReplyHeader header, Record record, String tag)`

### Methods inherited from class NIOServerCnxn

`close, closeSock, disableRecv, disableSelectable, enableRecv, enableSelectable, getClientCertificateChain, getInterestOps, getRemoteSocketAddress, getSessionId, getSessionTimeout, getSocketAddress, isSecure, isSelectable, isSocketOpen, process, sendBuffer, sendCloseSession, sendResponse, serverStats, setClientCertificateChain, setSessionId, setSessionTimeout, toString`

### Methods inherited from class 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, process, removeAuthInfo, resetStats, serialize, serializeRecord, setInvalid, setStale, updateStatsForResponse`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ControllableConnection

public ControllableConnection(ZooKeeperServer zk, SocketChannel sock, SelectionKey sk, NIOServerCnxnFactory factory, NIOServerCnxnFactory.SelectorThread selectorThread) throws IOException

Throws:
  `IOException`

## Method Details

### sendResponse

public int sendResponse(ReplyHeader header, Record record, String tag)

Overrides:
  `sendResponse` in class `ServerCnxn`

### readRequest

protected void readRequest() throws IOException

Overrides:
  `readRequest` in class `NIOServerCnxn`
Throws:
  `IOException`