@Override
            public void onRead() throws IOException {
                if (mProxyTunnel.isClosed()) {
                    mGateway.onResponseFinished();
                    return;
                }
                ByteBuffer buffer = ByteBuffer.allocate(mMtu);
                int len;
                try {
                    len = mProxyTunnel.read(buffer);
                } catch (IOException e) {
                    throw new ConnectionShutdownException(e.getMessage());
                }
                if (len < 0 || mRemoteTunnel.isClosed()) {
                    NetBareUtils.closeQuietly(mProxyTunnel);
                    mGateway.onResponseFinished();
                    return;
                }
                mGateway.onRequest(buffer);
            }
TCP protocol virtual gateway tunnel wraps {@link TcpProxyTunnel} and {@link TcpRemoteTunnel} as
client and server.

@author Megatron King
@since 2018-11-18 00:19
netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/TcpVATunnel.java