0

我有一个编年史队列,其中有以下课程:

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[] 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());

在没有分配的情况下检索字节缓冲区也是可能的,但我现在不是最好的方法。

4

0 回答 0