ByteBuffer readData()

in src/main/java/com/twitter/whiskey/net/SpdyStream.java [441:459]


        ByteBuffer readData(int length) throws IOException {

            while (dataIndex < data.length) {
                int available = data[dataIndex].remaining();
                if (available > 0) {
                    int bytesToRead = Math.min(length, available);
                    int oldLimit = data[dataIndex].limit();
                    int sliceLimit = data[dataIndex].position() + bytesToRead;
                    data[dataIndex].limit(sliceLimit);
                    ByteBuffer slice = data[dataIndex].slice();
                    data[dataIndex].limit(oldLimit);
                    data[dataIndex].position(sliceLimit);
                    return slice;
                }
                dataIndex++;
            }

            throw new IOException("no pending data");
        }