Giriş
ReaderIndex sanırım sadece Heap Buffer kullanırken anlamlı.
Örnek
ReaderIndex konumunu değiştirmeden okumak için şöyle yaparız
ByteBuf buf = ...
byte[] bytes = new byte[buf.readableBytes()];
int readerIndex = buf.readerIndex();
buf.getBytes(readerIndex, bytes);
Örnek
Şöyle yaparız. Heap buffer ise bytes değişkenini alırız ve offset değişkeni arrayOffset() ile doldurulur.
Direct buffer ise veriyi kopyalamak gerekir. readableBytes() ile okunabilecek veri büyüklüğü alınır ve getBytes() ile ReaderIndex ilerletilmeden veri kopyalanır
ByteBuf buf = ...
byte[] bytes;
int offset;
int length = buf.readableBytes();
if (buf.hasArray()) { //Heap Buffer
bytes = buf.array();
offset = buf.arrayOffset();
} else { //Direct Buffer
bytes = new byte[length];
buf.getBytes(buf.readerIndex(), bytes);
offset = 0;
}
Hiç yorum yok:
Yorum Gönder