package edu.brown.net;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
public class ZeroCopyOutputStreamAdaptor extends OutputStream {
private final ZeroCopyOutputStream stream;
public ZeroCopyOutputStreamAdaptor(ZeroCopyOutputStream stream) {
this.stream = stream;
}
@Override
public void write(int outputByte) throws IOException {
throw new UnsupportedOperationException("TODO: implement");
}
@Override
public void write(byte[] source, int offset, int length) {
while (length > 0) {
ByteBuffer next = stream.getNext();
assert next.remaining() > 0;
int bytesToWrite = length;
if (next.remaining() < bytesToWrite) bytesToWrite = next.remaining();
next.put(source, offset, bytesToWrite);
offset += bytesToWrite;
length -= bytesToWrite;
assert offset <= source.length;
assert length >= 0;
}
}
}