netty - 如何控制用于读取的缓冲区网络?
问题描述
我想非常具体地控制 Netty 在调用 read() 时使用的缓冲区。我该如何管理?
另外:对我来说,将读取事件与实际读取分离会很方便。但我可以(主要)通过消除对 OP_READ 的兴趣来解决这个问题。但是,如果我有一个 read_ready() 事件并且可以在我自己选择的时间调用(或不调用)带有 ByteBuf 的实际读取,那对我来说会更好。
我试图研究 NioSocketChanel 的实现,但我很快就迷路了。看起来它为每次读取分配了一个新缓冲区?(我假设分配器 impl 只是交还一个缓存的)。
如何确保操作系统调用读取将字节复制到内存中的特定位置?
还是为了方便 95% 不需要或不关心此功能的用例而铺平了此功能?
提前致谢
解决方案
过了一会儿又回到了这个。
您可以编写自己的 ByteBufAllocator 并将其传递给通道配置以控制 read 从何处获取它的缓冲区。
但是,您确实在与框架作斗争。我决定用别的东西。
推荐阅读
- xamarin - NavigationBar.ShadowImage = new UIImage() 在 xamarin.forms 4.5 之后不删除阴影线
- variables - 无法在 php 7.4 Laravel 7 中使用公共类型属性
- javascript - 为什么这段代码在 jQuery 上不能正常工作
- java - 在使用带有“AES/CBC/PKCS5Padding”的 Java Cipher 进行解密时,是否必须指定 IV?并且只能使用 SecretKeyFactory 吗?
- java - 随机 javax.net.ssl.SSLHandshakeException:GCP 上的“握手期间远程主机关闭连接”
- javascript - 反应:无法导入 .tsx 文件
- c++ - OpenSSL RSA 加密返回乱码。C++
- python - OSError:[WinError 126] 在 python 中导入库时
- c - 如何在 Linux 内核模块中设置字符设备的模式?
- r - 错误:在标准或给定位置找不到 proj_api.h