package voldemort.serialization.thrift; import java.io.ByteArrayOutputStream; import org.apache.thrift.transport.TTransport; import org.apache.thrift.transport.TTransportException; public class MemoryBuffer extends TTransport { protected ByteArrayOutputStream buffer; private int curPos; public MemoryBuffer() { this.buffer = new ByteArrayOutputStream(); } @Override public void close() { // do nothing } @Override public boolean isOpen() { return true; } @Override public void open() throws TTransportException { // do nothing } @Override public int read(byte[] buf, int off, int len) throws TTransportException { byte[] src = buffer.toByteArray(); int amtToRead = (len > src.length - curPos ? src.length - curPos : len); if(amtToRead > 0) { System.arraycopy(src, curPos, buf, off, amtToRead); curPos += amtToRead; } return amtToRead; } @Override public void write(byte[] buf, int off, int len) throws TTransportException { buffer.write(buf, off, len); } public byte[] toByteArray() { return buffer.toByteArray(); } }