Channel&Unsafe

Channel&Unsafe

1 channel

Channel是抽象出来的网络IO读写的相关接口。
Channel是资源的组织者,其中包括EventLoop,ChannelPipeline,ByteBufAlloc,Promise等

1.1 设计理念
  1. 采用Facade设计模式对操作进行统一封装。
  2. 为SocketChannel和ServerSocketChannel提供统一的视图
  3. 使用聚合方式,将相关功能的类聚合在channel中,并进行统一分配和调度。
1.2 api
1.2.1 网络相关
  1. Channel read()
  2. ChannelFuture write(Object msg)
  3. ChannelFuture write(Object msg, ChannelPromise promise)
  4. ChannelFuture writeAndFlush(Object msg)
  5. ChannelFuture writeAndFlush(Object msg, ChannelPromise promise)
  6. Channel flush()
  7. ChannelFuture close(ChannelPromise promise)
  8. ChannelFuture disconnect(ChannelPromise promise)
  9. ChannelFuture connect(SocketAddress address)
  10. ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress)
  11. ChannelFuture connect(SocketAddress remoteAddress, ChannelPromise promise)
  12. ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise)
  13. ChannelFuture bind(SocketAddress localAddress)
  14. ChannelFuture bind(SocketAddress localAddress, ChannelPromise promise)
  15. SocketAddress localAddress
  16. SocketAddress remoteAddress
1.2.2 状态监测
  1. boolean isOpen。是否打开
  2. boolean isActive。是否激活状态
  3. isRegistered。是否注册到EventLoop上
1.2.3 配置
  1. config。获取当前channel的配置信息
  2. metadata。获取当前channel的元数据信息,包括TCP参数配置
    1.2.4 其他
  3. id。Channel唯一标识
  4. eventLoop。Channel所注册的EventLoop
  5. parent。父Channel,server端用到
1.3 事件产生器

Nety是基于事件驱动的,我可以理解为Channel进行IO操作时会产生对应的IO事件,然后驱动事件在ChannelPipline中传播,由对应的ChannelHandler对事件进行拦截处理。

2 unsafe

Unsafe接口其实是Channel的辅助接口。
不应该被用户直接调用。
实际IO操作者,执行实际的IO操作

2.1 api
2.1.1 invoker
2.1.2 localAddress
2.1.3 remoteAddress
2.1.4 register
2.1.5 bind
2.1.6 connect
2.1.7 disconnect
2.1.8 close
2.1.9 closeForcibly
2.1.10 beginRead
2.1.11 write
2.1.12 voidPromise
2.1.13 outboundBuffer
wenxinzizhu wechat
扫一扫,添加我的微信,一起交流共同成长(备注为技术学习)