||ByteBufferBackedInputStream allows a ByteBuffer to be the source of data for
||ByteBufferBackedOutputStream serves two purposes:
It allows a ByteBuffer to be the source of data for OutputStream-based
It expands the underlying buffer to accommodate incoming data
This class is used to interface with callers using "classic" java.io.* APIs.
||Statistics object to track the communication buffer sizes across all the
connections, handled by the selector managers
||SelectorManager handles the non-blocking polling of IO events using the
Selector/SelectionKey APIs from NIO.
||SelectorManagerWorker manages a Selector, SocketChannel, and IO streams