通过源码去认知Netty-io.netty.channel

目录

1. 目标

2. 源码版本 

3. io.netty.channel

3.1. Channel

3.2. ChannelId

3.3. ChannelHandler

3.4. DefaultChannelHandlerContext

3.5. ChannelPipeline

3.6. ChannelFuture

3.7. EventLoop

3.8. MultithreadEventLoopGroup

3.9. SingleThreadEventLoop

4. io.netty.bootstrap

5. NIO封装


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操作
  • 更方便的方式:实
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值