99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Netty 4.x 基于攔截鏈模式的事件模型

2018-10-26 09:54 更新

基于攔截鏈模式的事件模型

一個(gè)定義良好并具有擴(kuò)展能力的事件模型是事件驅(qū)動(dòng)開(kāi)發(fā)的必要條件。Netty 具有定義良好的 I/O 事件模型。由于嚴(yán)格的層次結(jié)構(gòu)區(qū)分了不同的事件類型,因此 Netty 也允許你在不破壞現(xiàn)有代碼的情況下實(shí)現(xiàn)自己的事件類型。這是與其他框架相比另一個(gè)不同的地方。很多 NIO 框架沒(méi)有或者僅有有限的事件模型概念;在你試圖添加一個(gè)新的事件類型的時(shí)候常常需要修改已有的代碼,或者根本就不允許你進(jìn)行這種擴(kuò)展。

在一個(gè) ChannelPipeline 內(nèi)部一個(gè) [ChannelEvent]() 被一組ChannelHandler 處理。這個(gè)管道是 Intercepting Filter (攔截過(guò)濾器)模式的一種高級(jí)形式的實(shí)現(xiàn),因此對(duì)于一個(gè)事件如何被處理以及管道內(nèi)部處理器間的交互過(guò)程,你都將擁有絕對(duì)的控制力。例如,你可以定義一個(gè)從 socket 讀取到數(shù)據(jù)后的操作:

    public class MyReadHandler implements SimpleChannelHandler {
         public void messageReceived(ChannelHandlerContext ctx, MessageEvent evt) {
             Object message = evt.getMessage();
             // Do something with the received message.
                ...

             // And forward the event to the next handler.
             ctx.sendUpstream(evt);
        }
    }

同時(shí)你也可以定義一種操作響應(yīng)其他處理器的寫(xiě)操作請(qǐng)求:

    public class MyWriteHandler implements SimpleChannelHandler {
        public void writeRequested(ChannelHandlerContext ctx, MessageEvent evt) {
            Object message = evt.getMessage();
            // Do something with the message to be written.
                ...

            // And forward the event to the next handler.
            ctx.sendDownstream(evt);
        }
    }

有關(guān)事件模型的更多信息,請(qǐng)參考 API 文檔 ChannelEvent 和ChannelPipeline 部分。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)