@Override
    public void onRead() throws IOException {
        if (mRemoteTunnel.isClosed()) {
            mGateway.onRequestFinished();
            mGateway.onResponseFinished();
            return;
        }
        ByteBuffer buffer = ByteBuffer.allocate(mMtu);
        int len;
        try {
            len = mRemoteTunnel.read(buffer);
        } catch (IOException e) {
            throw new ConnectionShutdownException(e.getMessage());
        }
        if (len < 0) {
            close();
            return;
        }
        mGateway.onResponse(buffer);
    }
UDP protocol virtual gateway tunnel wraps {@link UdpRemoteTunnel} and itself as client and
server.

@author Megatron King
@since 2018-11-25 20:16
netbare-core/src/main/java/com/github/megatronking/netbare/tunnel/UdpVATunnel.java