簡介¶
public abstract class ByteBuf
implements ReferenceCounted
, Comparable
內容¶
讀寫指針¶
- CONTENT,還未讀取的資料
ByteBuf buffer = ...;
for (int i = 0; i < buffer.capacity(); i ++) {
//絕對取值,readerIndex不會動
byte b = buffer.getByte(i);
System.out.println((char) b);
}
// Iterates the readable bytes of a buffer.
ByteBuf buffer = ...;
while (buffer.isReadable()) {
// 相對取值,readerIndex會移動
System.out.println(buffer.readByte());
}
</pr
/*
* <pre>
* +-------------------+------------------+------------------+
* | discardable bytes | readable bytes | writable bytes |
* | | (CONTENT) | |
* +-------------------+------------------+------------------+
* | | | |
* 0 <= readerIndex <= writerIndex <= capacity
* </pre>
*/
Discardable bytes(把已經讀過的資料清空)¶
- Arrsys.copy...
/*
* <pre>
* BEFORE discardReadBytes()
*
* +-------------------+------------------+------------------+
* | discardable bytes | readable bytes | writable bytes |
* +-------------------+------------------+------------------+
* | | | |
* 0 <= readerIndex <= writerIndex <= capacity
*
*
* AFTER discardReadBytes()
*
* +------------------+--------------------------------------+
* | readable bytes | writable bytes (got more space) |
* +------------------+--------------------------------------+
* | | |
* readerIndex (0) <= writerIndex (decreased) <= capacity
* </pre>
*/
Clearing the buffer indexes(讀寫清空)¶
- 移動readerIndex
- 移動writerIndex
/*
* <pre>
* BEFORE clear()
*
* +-------------------+------------------+------------------+
* | discardable bytes | readable bytes | writable bytes |
* +-------------------+------------------+------------------+
* | | | |
* 0 <= readerIndex <= writerIndex <= capacity
*
*
* AFTER clear()
*
* +---------------------------------------------------------+
* | writable bytes (got more space) |
* +---------------------------------------------------------+
* | |
* 0 = readerIndex = writerIndex <= capacity
* </pre>
*/