netty新连接创建过程
2020-12-02 17:31:47 13 举报
netty创建新连接
作者其他创作
大纲/内容
runAllTasks
否
select
提交register任务
pipeline通知ChannelActive
顺时针循环
register
设置成功标识,然后通知相关的监听器
判断当前线程是不是与自己eventLoop中线程相等
processSelectedKeysOptimized
创建线程,绑定这个EventLoop中,并启动
从头开始通知
bossEventLoop
eventLoop.execut()
往NioSocketChannel的pipeline中添加handler
EventLoopGroup.register
next选择一个EventLoop
pipeline.fireChannelRead()
doRegister
unsafe.read()
到这一个新的连接已经注册完成,然后这个workerEventLoop也就进入循环继续等待事件,处理事件,处理任务
ServerBootstrapAcceptor.channelRead
提交任务
workerEventLoop
接受连接请求,得到SockectChannel然后创建对应的NioSocketChannel对象
中间会有一堆自定义handler
processSelectedKeys
pipeline执行handler已经添加,实际上就是通知handler初始化,因为我们addLast的时候添加的是个initHandler,这个时候就会通知,初始化动作 pipeline.invokeHandlerAddedIfNeeded();
执行register任务
这个也是从头开始通知的
调用worker线程组register
将socketChannel注册到selector上上面,然后这个attach就是这个netty包装的chennel
pipeline处理
handler.channelRead
EventLoop
pipeline通知ChannelRegistered
往channel中设置参数
processSelectedKey
unsafe.register
0 条评论
下一页