package com.koushikdutta.async;
public class FilteredDataSink extends BufferedDataSink {
public FilteredDataSink(DataSink sink) {
super(sink);
setMaxBuffer(0);
}
public ByteBufferList filter(ByteBufferList bb) {
return bb;
}
@Override
public final void write(ByteBufferList bb) {
// don't filter and write if currently buffering, unless we know
// that the buffer can fit the entirety of the filtered result
if (isBuffering() && getMaxBuffer() != Integer.MAX_VALUE)
return;
ByteBufferList filtered = filter(bb);
assert bb == null || filtered == bb || bb.isEmpty();
super.write(filtered, true);
if (bb != null)
bb.recycle();
}
}