Mina2 0框架原始碼剖析(三)

2021-04-30 02:59:16 字數 926 閱讀 1994

abstractioacceptor類繼承自abstractioservice基類,並實現了ioacceptor介面,它主要的成員變數是本地繫結位址。 

在呼叫bind或unbind方法時需要先獲取繫結鎖bindlock,具體的繫結操作還是在bind0這個方法中實現的。一旦繫結成功後,就會向服務監聽者發出服務啟用的事件(serviceactivated),同理,解除繫結也是在unbind0這個方法中具體實現的。一旦解除繫結成功後,就會向服務監聽者發出服務啟用的事件(servicedeactivated)。 

abstractioconnector類繼承自abstractioservice基類,並實現了ioconnect介面,連線超時檢查間隔時間預設是50毫秒,超時時間預設為1分鐘,使用者可以自行配置。此類中重要的方法就是connect方法,其中呼叫了具體的連線邏輯實現connect0

abstractioconnector在abstractioservice的基礎上,在會話初始化結束時增加了乙個功能,就是加入了乙個監聽者,當連線請求被取消時立即結束此會話。 

下面再來看乙個ioprocessor介面的基本實現類******ioprocessorpool,它的泛型引數是abstractiosession的子類,表示此processor管理的具體會話型別。並且這個類還實現了池化,它會將多個iosession分布到多個ioprocessor上去管理。下面是文件中給出的乙個示例: 

與processor池有關的包括如下這些成員變數: 

processor池的構造過程,其中有三種建構函式供選擇來構造乙個processor : 

1. 帶引數 executorservice 的建構函式. 

2. 帶引數為 executor的建構函式. 

3. 預設建構函式 

從processor池中分配乙個processor的過程,注意乙個processor是可以同時管理多個session的。 

Mina2 0框架原始碼剖析(二)

其中有乙個idlestatuschecker成員,它用來對服務的空閒狀態進行檢查,在乙個服務啟用時會將服務納入到檢查名單中,而在服務失效時會將服務從名單中剔除。會單獨開乙個執行緒進行具體的空閒檢查,這是通過下面這個執行緒類來負責的 具體的空閒檢查 如下,超過能容忍的最大空閒時間,就會fire出ses...

Mina2 0框架原始碼剖析(五)

前面介紹過iosessionrecycler是負責 不再使用的會話的介面,expiringsessionrecycler是其乙個實現類,用於 超時失效的會話。private expiringmapsessionmap 待處理的會話集 private expiringmap.expirer mapex...

Mina2 0框架原始碼剖析(二)

介紹了幾個核心的介面,這一篇主要介紹實現這些介面的抽象基類。首先是實現ioservice介面的abstractioservice類。它包含了乙個executor來處理到來的事件。每個abstractioservice都乙個atomicinteger型別的id號,確保每個id的唯一性。它內部的exec...