gpt4 book ai didi

java - Netty ByteBuf 首次实现

转载 作者:行者123 更新时间:2023-11-30 02:33:28 25 4
gpt4 key购买 nike

我的计划是制定如下所示的消息协议(protocol):

  • MessageLength:消息总长度的整数
  • MessageID:具有自动递增标识符的整数
  • MessageType:带有消息类型的整数(enum)
  • Payload:byte[] 以及消息的有效负载(序列化 POJO)

目前,我只是想确保以正确且最佳的方式创建ByteBuf。现阶段我有以下内容:

io.netty.buffer.ByteBuf buf = Unpooled.buffer();

// Test Data Class
TestData test = new TestData("FirstName", "LastName", 40);

// Convert to Bytes is method to return the Byte Array (Serialised POJO)
byte[] payload = convertToBytes(test);

// Write 1 simulating MessageID 1
buf.writeInt(1);

// Write 2 simulating MessageType of 2
buf.writeInt(2);

// Write The Payload data<BR>
buf.writeBytes(payload);

目标是让它们传递到 LengthFieldPrepender 并沿着管道向上。

这是创建ByteBuf的正确方法吗?或者有更好的办法吗?

最佳答案

如果可能的话,您应该使用分配器来创建 ByteBuf,因为这可能会给您一个池化的 ByteBuf(取决于配置)。

类似于:

Channel channel = ...
channel.alloc().buffer(expectedSize)

另请注意,我传入了 ByteBuf 的预期大小,因为这将确保我们稍后在填充它时不需要扩展它。

关于java - Netty ByteBuf 首次实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com