Использование байтов для упаковки ByteBuffer

У меня есть очередь хроник, где у меня есть следующий класс:

      public class Message extends SelfDescribingMarshallable {
    private final Bytes<ByteBuffer> text;
    private long timeStamp;

    public Message(int bufferSize, long timeStamp) {
        this.text = Bytes.elasticHeapByteBuffer(bufferSize);
        this.timeStamp = timeStamp;
    }

    public Bytes<ByteBuffer> getText() {
        return text;
    }

    public void setText(CharSequence text) {
        this.text.clear().append(text);
    }

    public long getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(long timeStamp) {
        this.timeStamp = timeStamp;
    }
}

Я использую этот класс для чтения и записи из очереди. Мне нужно интегрироваться с внутренней библиотекой, которая получает этот текст в следующих форматах: ByteBuffer и byte[]. Мне нужно отправить текст с правильным размером и без выделения памяти, другими словами, мне нужно поделиться экземпляром текста, потому что я применяю эту библиотеку к шаблону цепочки команд, и для моего poc малое время задержки - это большое дело.

Для извлечения byte[] без выделения памяти я использую следующую стратегию:

      byte[] textByte = new byte[2048];
ByteBuffer textBuffer = message.getText().underlyingObject();
textBuffer.limit((int) message.getText().readLimit());
textBuffer.position(0);
textBuffer.get(textByte, 0, (int) message.getText().readLimit());

Извлечение байтового буфера без выделения тоже возможно, но сейчас я не знаю, как это сделать лучше всего.

0 ответов

Другие вопросы по тегам