@@ -0,0 +1,1465 @@
+// Copyright 2014, Kevin Ko %3Ckevin@faveset.com%3E%0A%0Apackage com.faveset.khttp;%0A%0Aimport java.nio.ByteBuffer;%0A%0Aclass ArrayNetReader implements NetReader %7B%0A    private ByteBufferArray mBufArray;%0A%0A    public ArrayNetBuffer(ByteBuffer bufs) %7B%0A        this(new ByteBufferArray(bufs));%0A    %7D%0A%0A    public ArrayNetBuffer(ByteBufferArray bufArray) %7B%0A        mBufArray = bufArray;%0A    %7D%0A%0A    public boolean isEmpty() %7B%0A        return !mBufArray.hasRemaining();%0A    %7D%0A%0A    public SSLEngineResult unwrap(SSLEngine engine, NetBuffer dest) %7B%0A        dest.prepareAppend();%0A%0A        SSLEngineResult result = engine.unwrap(mBufArray.getBuffers(), dest);%0A        mBufArray.update();%0A        return result;%0A    %7D%0A%0A    public SSLEngineResult unwrapUnsafe(SSLEngine engine, NetBuffer dest) %7B%0A        SSLEngineResult result = engine.unwrap(mBufArray.getBuffers(), dest);%0A        mBufArray.update();%0A        return result;%0A    %7D%0A%0A    public void updateRead() %7B%0A        // This is a NOP, since we update the buf array after every wrap/unwrap.%0A    %7D%0A%0A    public SSLEngineResult wrap(SSLEngine engine, NetBuffer dest) %7B%0A        dest.prepareAppend();%0A%0A        SSLEngineResult result = engine.wrap(mBufArray.getBuffers(), dest);%0A        mBufArray.update();%0A%0A        return result;%0A    %7D%0A%0A    public SSLEngineResult wrapUnsafe(SSLEngine engine, NetBuffer dest) %7B%0A        SSLEngineResult result = engine.wrap(mBufArray.getBuffers(), dest);%0A        mBufArray.update();%0A        return result;%0A    %7D%0A%7D%0A

Add ByteBufferArray based ArrayNetReader.