目录
3.4. DefaultChannelHandlerContext
3.8. MultithreadEventLoopGroup
1. 目标
通过io.netty.channel和io.netty.bootstrap两个package,对netty进行总体认知。进一步查看netty对NIO的封装,了解源码实现,梳理类层次关系与源码流程。
2. 源码版本
Netty v4.1.5
3. io.netty.channel
3.1. Channel
what
Channel作为网络socket或IO组件的连接体。
extends AttributeMap, ChannelOutboundInvoker, Comparable<Channel>
io操作需要通过channel发起,所以继承了outbound.
提供一个用户试图
- channel的状态,如open/connected
- channel的配置
- channel支持的IO操作
- channelpipeline,处理与该channel相关的所有IO事件/请求
所有IO操作都是异步的
所有IO操作都会立即返回,且返回channelFuture,当IO已经完成时,会notify该future。
结构化 parent
指明该channel时如何被创建的
支持向下转型down-cast
用来支持特殊传输操作,因为某些传输实现拥有特有的操作。
释放资源
close时,确保释放所有资源
3.2. ChannelId
Channel的全局唯一标示
相关因素
- 物理地址MAC address/网络适配器the network adapter
- 当前进程ID
- System.currentTimeMillis()
- System.nanoTime()
- 随机32bit整数
- 顺序生成的32bit整数
3.3. ChannelHandler
what
处理IO事件/IO操作,并传递给下一个handler。
开发者需要做什么
开发者需要实现channelHandler具体实现类
- ChannelInboundHandler处理IO事件
- ChannelOutboundHandler处理IO操作
- 更方便的方式:实