30 Nisan 2021 Cuma

Netty ByteBuf ReaderIndex Kullanımı

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