package code.google.nfs.rpc.grizzly.serialize; /** * nfs-rpc * Apache License * * http://code.google.com/p/nfs-rpc (c) 2011 */ import org.glassfish.grizzly.Buffer; import org.glassfish.grizzly.filterchain.FilterChainContext; import org.glassfish.grizzly.memory.MemoryManager; import code.google.nfs.rpc.protocol.ByteBufferWrapper; import org.glassfish.grizzly.memory.Buffers; /** * Grizzly ByteBuffer Wrapper * * @author <a href="mailto:bluedavy@gmail.com">bluedavy</a> */ public class GrizzlyByteBufferWrapper implements ByteBufferWrapper { private Buffer buffer; private FilterChainContext ctx; public GrizzlyByteBufferWrapper(FilterChainContext ctx) { this.ctx = ctx; } public GrizzlyByteBufferWrapper(Buffer buffer) { this.buffer = buffer; } public ByteBufferWrapper get(int capacity) { buffer = Buffers.wrap(ctx.getMemoryManager(), new byte[capacity]); return this; } public Buffer getBuffer() { return buffer; } public byte readByte() { return buffer.get(); } public void readBytes(byte[] data) { buffer.get(data); } public int readInt() { return buffer.getInt(); } public int readableBytes() { return buffer.remaining(); } public int readerIndex() { return buffer.position(); } public void setReaderIndex(int readerIndex) { buffer.position(readerIndex); } public void writeByte(byte data) { buffer.put(data); } public void writeByte(int index, byte data) { buffer.put(index, data); } public void writeBytes(byte[] data) { buffer.put(data); } public void writeInt(int data) { buffer.putInt(data); } }