一、前言
前面學(xué)習(xí)了Netty的ByteBuf,接著學(xué)習(xí)ChannelHandler和ChannelPipeline。
二、ChannelHandler和ChannelPipeline
2.1 ChannelHandler
在ChannelPipeline中,ChannelHandler可以被鏈在一起處理用戶邏輯。
1. Channel生命周期
Channel接口定義了一個(gè)簡(jiǎn)單但是強(qiáng)大的狀態(tài)模型,該模型與ChannelInboundHandler API緊密聯(lián)系,Channel有如下四種狀態(tài)。
Channel的生命周期如下圖所示。
當(dāng)狀態(tài)發(fā)生變化時(shí),就會(huì)產(chǎn)生相應(yīng)的事件。
2. ChannelHandler的生命周期
ChannelHandler定義的生命周期如下圖所示。
Netty定義了ChannelHandler的兩個(gè)重要的子類
· ChannelInboundHandler,處理各種入站的數(shù)據(jù)和狀態(tài)的變化。
· ChannelOutboundHandler,處理出站數(shù)據(jù)并允許攔截的所有操作。
3. ChannelInboundHandler接口
下圖展示了ChannelInboundHandler接口生命周期中的方法,當(dāng)接受到數(shù)據(jù)或者其對(duì)應(yīng)的Channel的狀態(tài)發(fā)生變化則會(huì)調(diào)用方法