32、Netty源码分析:ChannelPipeline的flush

fireChannelWritabilityChanged

当向netty的缓冲区写数据的时候,如果一次性写的数据过大可能会导致缓冲区溢出,此时会将缓冲区设置为不可写;当缓冲区的数据发送出去后会释放一定的空间,此时缓冲区可能下降至低水位,又可以写入新的数据,会将原本不可读的标志改为可写。这两种情况会触发fireChannelWritabilityChanged事件通知pipeline中handlers,源码过程如下:

*

flush

netty有自己的缓冲区,每次向该缓冲区时不会直接发送出去,而是等调用flush方法时一次性发送出去,避免小量的数据多次发送。flush的源码过程如下:

*

deregister

deregister的源码过程如下:
*

至此,fireChannelWritabilityChanged、flush、deregister就分析完毕。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: