Mic*_*een 7 java nio bytebuffer real-time
我有一个或多个ByteBuffers包含单个消息的一部分.现在我想阅读此消息,但我不想将N ByteBuffer复制到单个消息中.我的解析器期望单个ByteBuffer具有完整的消息,但是我的消息被分成N个ByteBuffers.
有没有办法将这些N ByteBuffers组合成一个没有字节复制的单个?我想象了ByteBuffer抽象类的某种智能实现,它由引擎盖下的这些ByteBuffer备份,只需调整指针并委托给正确的ByteBuffer.
如果您对我需要的原因感到好奇,请查看下面的BM&F/Bovespa协议.它们将消息分成块,并且它们可以在不同的数据包中无序出现,换句话说,相同的消息序列可以包含多个数据包,每个数据包都有一个消息块.我无法按顺序写入相同的ByteBuffer,因为这些块可能出现故障.:(
我错过了一些更聪明的东西吗?在下面给出了这个块协议,看起来没有办法顺序写入相同的ByteBuffer.:(

小智 -4
您可以将 ByteBuffer 彼此链接起来,返回一个 ByteBuffer,如下所示:
bba.append(bbb.toBytes()).append(bbc.toBytes())
Run Code Online (Sandbox Code Playgroud)
这会产生一个 ByteBuffer,可以将其传递给您的解析方法。
它有效地创建了一个副本,但除非您将其分配给某些内容,否则它将排队等待 GC。
如果您不知道 ByteBuffer 的数量,请使用 ByteBuffer 列表,并动态添加每个字节,然后将它们附加到循环中。您可以在附加之前对列表进行排序,以便块按您想要的顺序显示。
| 归档时间: |
|
| 查看次数: |
836 次 |
| 最近记录: |