Netty创建连接
2021-08-24 11:07:10 0 举报
流程图及部分代码结合的形式分析Netty创建链接的过程
作者其他创作
大纲/内容
执行channel.read也就是AbstractChannel#read
注册到workerGroup,执行方法register
pipeline.read
read:unsafe.beginRead();默认实现在AbstractUnsafe的beginRead中
是否首次连接
processSelectKeyOptimized
如果channel处于激活状态
pipeline.fireChannelActive传播渠道Active事件
Handler3(是否实现read)
unsafe.read开始读
NioEventLoop.run
HeadContext的ChannelActive方法
开始channelRead传播
register0
HeadContext的read方法
Handler2(是否实现read)
server侧的unsafe其实是AbstractNioMessageUnsafe
TailContext(没有实现read)
Pipeline
是
Worker Group线程组
ServerBootstrapAcceptor
doRegister模板方法,这个就是JDK式的注册
1.封装JDK的SocketChannel产生NioSocketChannel
readIfIsAutoRead
实现逻辑如下图注册读事件的图中
注册读事件@Override protected void doBeginRead() throws Exception { // Channel.read() or ChannelHandlerContext.read() was called final SelectionKey selectionKey = this.selectionKey; if (!selectionKey.isValid()) { return; } readPending = true; final int interestOps = selectionKey.interestOps(); if ((interestOps & readInterestOp) == 0) { selectionKey.interestOps(interestOps | readInterestOp); } }
执行AbstractNioChannel下的AbstractUnsafe内的register
有连接请求进入
Handler1(是否实现read)
Server(NioServerSocketChannel)
0 条评论
下一页