Adds a method to get the buffer for a specific index in CompositeByteBuf

This fixes #414
This commit is contained in:
Cruz Julian Bishop 2012-06-28 10:24:18 +10:00
parent 90d9febbc0
commit cb8c9767f6

View File

@ -575,6 +575,24 @@ public class CompositeByteBuf extends AbstractByteBuf {
dst.writerIndex(dst.capacity());
}
public ByteBuf getBufferFor(int index) throws IOException {
if (index < 0 || index > capacity()) {
throw new IndexOutOfBoundsException("Invalid index: " + index
+ " - Bytes needed: " + (index) + ", maximum is "
+ capacity());
}
List<ByteBuf> components = decompose(index, 1);
switch (components.size()) {
case 0:
return Unpooled.EMPTY_BUFFER;
case 1:
return components.get(0);
default:
throw new IOException("Index " + index + " is part of " + components.size() + " buffers!");
}
}
@Override
public ByteBuf slice(int index, int length) {
if (index == 0) {