如何控制netty用于读取的缓冲区?

如何控制netty用于读取的缓冲区?,netty,Netty,我想对Netty调用read()时使用的缓冲区进行非常具体的控制。我如何管理这个 另外:我可以方便地将读取事件与实际读取分离。但我可以通过消除对OP_READ的兴趣(大部分)来解决这个问题。但是如果我有一个read_ready()事件,并且可以在自己选择的时间调用(或不调用)实际的read w/a ByteBuf,对我来说会更好 我试图研究NioSocketChanel的实现,但很快就迷失了方向。看起来它为每次读取都分配了一个新的缓冲区?(我假设分配器impl只是返回一个缓存的分配器) 如何确保

我想对Netty调用read()时使用的缓冲区进行非常具体的控制。我如何管理这个

另外:我可以方便地将读取事件与实际读取分离。但我可以通过消除对OP_READ的兴趣(大部分)来解决这个问题。但是如果我有一个read_ready()事件,并且可以在自己选择的时间调用(或不调用)实际的read w/a ByteBuf,对我来说会更好

我试图研究NioSocketChanel的实现,但很快就迷失了方向。看起来它为每次读取都分配了一个新的缓冲区?(我假设分配器impl只是返回一个缓存的分配器)

如何确保操作系统读取调用将字节复制到内存中的特定位置

或者这个特性是为了方便95%的不需要或不关心这个的用例而设计的吗


提前感谢

过了一会儿又回到这里

您可以编写自己的ByteBufAllocator并将其传递给通道配置,以控制read从何处获取缓冲区


然而,您实际上是在与框架作斗争。我决定用别的东西。

所以,已经有一段时间了。我想答案是“做不到”。我会删除这条评论,如果它被证明是错误的,我会更新这个问题。好的决定。当Netty第一次出现时,我对它进行了很好的研究,在我看来它与NIO成直角,而不是构建在它之上,拥有自己的缓冲区、线程等。NIO已经是一个框架,听起来这是您应该操作的级别。