分析新连接接入以及绑定reactor线程,绑定到selector的过程
新连接接入概述
1.Netty是在哪里检测新连接接入的?
2.新连接是怎样注册到NioEventLoop线程的?
新连接检测
processSelectedKey(key,channel)-----入口
NioMessageUnsafe.read()
doReadMessages()----while循环
javaChannel().accept()
NioSocketChannel的创建
new NioSocketChannel(parent,ch) -----入口
AbstractNioByteChannel(p,ch,op_read)
configureBlocking(false) & save op
create id,unsafe,pipeline
new NioSocketChannelConfig()
setTcpNoDelay(true) 禁止Nagle算法
Channel的分类
1.NioServerSocketChannel
2.NioSocketChannel
3.Unsafe
新连接NioEventLoop的分配和selector注册
服务端Channel的pipeline构成:
Head-------ServerBootstrapAcceptor-----Tail
ServerBootstrapAcceptor:
1.添加childHandler
2.设置options和attrs
3.选择NioEventLoop并注册selector