package test.r2.perf; import com.linkedin.data.ByteString; import com.linkedin.r2.filter.R2Constants; import com.linkedin.r2.message.stream.entitystream.WriteHandle; import com.linkedin.r2.message.stream.entitystream.Writer; /** * @auther Zhenkai Zhu */ public class PerfStreamWriter implements Writer { private WriteHandle _wh; private int _offset; private final int _msgSize; public PerfStreamWriter(int msgSize) { _msgSize = msgSize; } @Override public void onInit(WriteHandle wh) { _wh = wh; } @Override public void onWritePossible() { while(_wh.remaining() > 0) { if (_offset == _msgSize) { _wh.done(); break; } int bytesToWrite = Math.min(R2Constants.DEFAULT_DATA_CHUNK_SIZE, _msgSize - _offset); _wh.write(ByteString.copy(new byte[bytesToWrite])); _offset += bytesToWrite; } } @Override public void onAbort(Throwable e) { } }