Add nioBuffers() and nioBuffers(..) method which will be used to support gathering writes for the AIO transport. See #492
This commit is contained in:
parent
0334333c82
commit
f7e0366bae
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package io.netty.buffer;
|
package io.netty.buffer;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface CompositeByteBuf extends ByteBuf, Iterable<ByteBuf> {
|
public interface CompositeByteBuf extends ByteBuf, Iterable<ByteBuf> {
|
||||||
@ -47,4 +48,32 @@ public interface CompositeByteBuf extends ByteBuf, Iterable<ByteBuf> {
|
|||||||
* Same with {@link #slice(int, int)} except that this method returns a list.
|
* Same with {@link #slice(int, int)} except that this method returns a list.
|
||||||
*/
|
*/
|
||||||
List<ByteBuf> decompose(int offset, int length);
|
List<ByteBuf> decompose(int offset, int length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exposes this buffer's readable bytes as an NIO {@link ByteBuffer}'s. The returned buffer
|
||||||
|
* shares the content with this buffer, while changing the position and limit of the returned
|
||||||
|
* NIO buffer does not affect the indexes and marks of this buffer. This method does not
|
||||||
|
* modify {@code readerIndex} or {@code writerIndex} of this buffer. Please note that the
|
||||||
|
* returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic
|
||||||
|
* buffer and it adjusted its capacity.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException
|
||||||
|
* if this buffer cannot create a {@link ByteBuffer} that shares the content with itself
|
||||||
|
*/
|
||||||
|
ByteBuffer[] nioBuffers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exposes this buffer's bytes as an NIO {@link ByteBuffer}'s for the specified offset and length
|
||||||
|
* The returned buffer shares the content with this buffer, while changing the position and limit
|
||||||
|
* of the returned NIO buffer does not affect the indexes and marks of this buffer. This method does
|
||||||
|
* not modify {@code readerIndex} or {@code writerIndex} of this buffer. Please note that the
|
||||||
|
* returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic
|
||||||
|
* buffer and it adjusted its capacity.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException
|
||||||
|
* if this buffer cannot create a {@link ByteBuffer} that shares the content with itself
|
||||||
|
*/
|
||||||
|
ByteBuffer[] nioBuffers(int offset, int length);
|
||||||
}
|
}
|
||||||
|
@ -1011,7 +1011,8 @@ public class DefaultCompositeByteBuf extends AbstractByteBuf implements Composit
|
|||||||
return merged;
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ByteBuffer[] nioBuffers(int index, int length) {
|
@Override
|
||||||
|
public ByteBuffer[] nioBuffers(int index, int length) {
|
||||||
int componentId = toComponentIndex(index);
|
int componentId = toComponentIndex(index);
|
||||||
if (index + length > capacity()) {
|
if (index + length > capacity()) {
|
||||||
throw new IndexOutOfBoundsException("Too many bytes to convert - Needs"
|
throw new IndexOutOfBoundsException("Too many bytes to convert - Needs"
|
||||||
@ -1224,4 +1225,9 @@ public class DefaultCompositeByteBuf extends AbstractByteBuf implements Composit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ByteBuffer[] nioBuffers() {
|
||||||
|
return nioBuffers(readerIndex(), readableBytes());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user