@SuppressWarnings("unchecked")
@Override
protected void write(Object data, Promise<Void> onComplete, boolean flush) {
Buffer buff = getEncoder().apply((OUT) data);
write(buff.byteBuffer(), onComplete, flush);
}
@Override
protected synchronized void flush() {
doFlush(null);