netty概念
Netty的ChannelFuture
在Netty中的所有的I/O操作都是異步執行的,這就意味著任何一個I/O操作會立刻返回,不保證在調用結束的時候操作會執行完成。因此,會返回一個ChannelFuture的實例,通過這個實例可以獲取當前I/O操作的狀態。ChannelFuture為完成或未完成狀態。
?channel ?channelhandler channelHandlerContex channelPipelin ?channelEvent??
Channel是通訊的載體
ChannelHandler負責Channel中的邏輯處理。? ChannelPipeline為ChannelHandler的容器:
一個Channel包含一個ChannelPipeline,所有ChannelHandler都會注冊到ChannelPipeline中,并按順序組織起來。
ChannelEvent是數據或者狀態的載體,例如傳輸的數據對應MessageEvent,狀態的改變對應ChannelStateEvent。
當對Channel進行操作時,會產生一個ChannelEvent,并發送到ChannelPipeline。ChannelPipeline會選擇一個ChannelHandler進行處理。這個ChannelHandler處理之后,可能會產生新的ChannelEvent,并流轉到下一個ChannelHandler。
ChannelSink萬能Handler?重要方法ChannelSink.eventSunk,可以接受任意ChannelEvent。
? ChannelHandlerContext這個接口。
ChannelHandlerContext保存了Handler相關的的上下文信息。
?DefaultChannelHandlerContext,則是對ChannelHandler的一個包裝。一個DefaultChannelHandlerContext內部,除了包含一個ChannelHandler,還保存了"next"和"prev"兩個指針,從而形成一個雙向鏈表。
?在DefaultChannelPipeline中,我們看到的是對DefaultChannelHandlerContext的引用,而不是對ChannelHandler的直接引用。這里包含"head"和"tail"兩個引用,分別指向鏈表的頭和尾。而name2ctx則是一個按名字索引DefaultChannelHandlerContext用戶的一個map,主要在按照名稱刪除或者添加ChannelHandler時使用。
?Netty那點事(一)概述
Netty那點事(四)Netty與Reactor模式
在Netty中的所有的I/O操作都是異步執行的,這就意味著任何一個I/O操作會立刻返回,不保證在調用結束的時候操作會執行完成。因此,會返回一個ChannelFuture的實例,通過這個實例可以獲取當前I/O操作的狀態。ChannelFuture為完成或未完成狀態。
?channel ?channelhandler channelHandlerContex channelPipelin ?channelEvent??
Channel是通訊的載體
ChannelHandler負責Channel中的邏輯處理。? ChannelPipeline為ChannelHandler的容器:
一個Channel包含一個ChannelPipeline,所有ChannelHandler都會注冊到ChannelPipeline中,并按順序組織起來。
ChannelEvent是數據或者狀態的載體,例如傳輸的數據對應MessageEvent,狀態的改變對應ChannelStateEvent。
當對Channel進行操作時,會產生一個ChannelEvent,并發送到ChannelPipeline。ChannelPipeline會選擇一個ChannelHandler進行處理。這個ChannelHandler處理之后,可能會產生新的ChannelEvent,并流轉到下一個ChannelHandler。
ChannelSink萬能Handler?重要方法ChannelSink.eventSunk,可以接受任意ChannelEvent。
? ChannelHandlerContext這個接口。
ChannelHandlerContext保存了Handler相關的的上下文信息。
?DefaultChannelHandlerContext,則是對ChannelHandler的一個包裝。一個DefaultChannelHandlerContext內部,除了包含一個ChannelHandler,還保存了"next"和"prev"兩個指針,從而形成一個雙向鏈表。
?在DefaultChannelPipeline中,我們看到的是對DefaultChannelHandlerContext的引用,而不是對ChannelHandler的直接引用。這里包含"head"和"tail"兩個引用,分別指向鏈表的頭和尾。而name2ctx則是一個按名字索引DefaultChannelHandlerContext用戶的一個map,主要在按照名稱刪除或者添加ChannelHandler時使用。
?
Netty那點事(一)概述
Netty那點事(二)Netty中的buffer
Netty那點事(三)Channel與Pipeline
Netty那點事(四)Netty與Reactor模式
Netty使用實例
轉載于:https://www.cnblogs.com/straybirds/p/5109500.html
總結
- 上一篇: python决策树预测模型_带决策树回归
- 下一篇: plsqldev 技巧