Netty执行流程
2020-03-26 22:21:24 0 举报
Netty执行流程
作者其他创作
大纲/内容
Head
3.选择NioEventLoop并注册selector
获取NioEventLoop中的ServerSocketChannel,即通过调用javaChannel()获取
服务端处理新连接接入
将客户端的channel进行包装,包装成NioSocketChannel
新连接NioEventLoop的分配和selector注册
workerGroup
NioEventLoop
调用doBeginRead(),将创建client时的OP_READ注册到SelectionKey上
通过ServerSocketChannel.accept()创建客户端的channel
检测新连接接入
获取服务端的ServerSocketChannel
setTcpNoDelay(true)禁止Nagle算法
补充
服务端channel的pipeline构成
3.2 由于不是在worker线程中进行注册的,因此,通过提交任务的方式进行注册,顺便启动worker线程eventLoop.execute(() -> register0(client));
ServerBootstrapAcceptor
1.为客户端添加pipeline
被框架调用channelRead方法做了3件事
2.为客户端设置options和attrs
new NioSocketChannelConfig()
Tail
调用next()按照指定规则获取workerGroup中的一个NioEventLoop
fireChannelActive传播
netty中的ServerSocketChannel注册selector的时候都会attach一个对象(AbstractNioChanneld.oRegister),该对象就是包装过的ServerSocketChannel,即NioServerSocketChannel,将来resulting key都携带该对象
register0(client)
获取感兴趣的事件(OP_ACCEPT)
bossGroup
0 条评论
下一页