日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

網(wǎng)絡(luò)I/o編程模型23 netty的出站與入站中handler加載與執(zhí)行順序

作者:健康平安的活著 更新時間: 2022-07-10 編程語言

一 出站與入站中handler加載與執(zhí)行順序

1.1 關(guān)系梳理

1.調(diào)用 new Context(group,filterName(name,handler),handler)方法,創(chuàng)建一個Context。從這里可以看出來,每次添加一個handler都會常見一個關(guān)聯(lián)的Context。調(diào)用 addLast方法,將Context追加到鏈表中。由下圖的中的黃色箭頭表示,可以看出123的順序就是在追加。

2.每當創(chuàng)建channelSocket的時候都會創(chuàng)建一個綁定的pipeiline,1:1的關(guān)系,創(chuàng)建peipeline的時候會創(chuàng)建tail節(jié)點和head節(jié)點,形成最初的鏈表
3.在調(diào)用peipeline的addLast方法的時候,會根據(jù)給定的handler創(chuàng)建一個context,然后建這個context插入到鏈表的尾端(tail的前面)
3.context包裝了多個handeler,多個context在pipeline中形成雙向鏈表。
4.入站方向叫inbound,由head節(jié)點開始,出站方向叫outbound,由tail節(jié)點開始
因為出站是從內(nèi)部向外面進行寫操作,從tail開始能夠讓前面的handler進行處理,防止handler被遺漏,如編碼。入站當然就是從head網(wǎng)內(nèi)部輸入,讓后面的handler能夠處理這些輸入的數(shù)據(jù)。比如解碼。
注意:雖然head也實現(xiàn)了outbound接口,但不是從head開始執(zhí)行出站任務(wù)的。
5.而節(jié)點中間的傳遞通過AbstaractChannelHandlerContext類內(nèi)部的fire系列方法,找到當前節(jié)點的下一個節(jié)點不斷的循環(huán)傳播,是一個過濾器形成 完成對handler的調(diào)度。

https://www.cnblogs.com/tianzhiliang/p/11739372.html

二 netty網(wǎng)絡(luò)通信中涉及的出棧和入棧流程

2.1 描述

channelhandler處理事件分為出站和入站,兩個方向的操作都是不同的,因此,netty定義了兩個子接口繼承channnelhandler。
netty提供的一系列使用的編碼解碼器,本質(zhì)上也是一種handler,它們都實現(xiàn)了ChannelInboundHandler或者ChannelOutboundHandler接口。

業(yè)務(wù)處理的handler一定要放到最后面

1.channelInboundhandler? 入站事件接口

channelActive:用于當channel處于活動狀態(tài)時被調(diào)用
channelRead: 當從channel讀取數(shù)據(jù)時被調(diào)用等方法

2.channelOutboundHndler ?出站事件接口
bind 方法:當請求將channel綁定到本地地址時調(diào)用
close 方法: 當請求關(guān)閉channel 時調(diào)用等等。

?3.整體流程圖

原文鏈接:https://blog.csdn.net/u011066470/article/details/125357244

欄目分類
最近更新