opcodetypecomponent元件和messagedispathercomponent元件都是訊息系統的組成部分。這裡就來好好捋一捋et的訊息系統。從我目前看到現在來說,這個訊息系統包括一系列的事件介面,特性,和訊息型別的識別碼等等部分,這裡先撇開前後端通訊部分的訊息。
public inte***ce imhandler
imhandler介面是乙個比較基本的介面,可以看到其內部有乙個hadle方法和乙個getmessagetype方法。handle方法接受session和object兩個型別的引數。這兩個方法在messagedispathercomponent類中都被執行了,具體可以看我的這篇文章。
public abstract class amhandler: imhandler where message: class
to ");
return;
} if (session.isdisposed)
");return;
} this.run(session, message);
} public type getmessagetype()
}
amhandler抽象類內部有乙個抽象方法run和乙個handle方法,handle方法會在判斷訊息內部不為空後執行run方法。module層和hotfix層,handle的呼叫時機不是盡然相同的,module層是在module.session中呼叫,hotfix層是在hotfix.session中呼叫。該類的作用在於將接受服務端訊息的方法,包裝成類,配合messagehandlerattribute特性來做乙個區分,便於反射來收集。
public inte***ce irequest: imessage
}public inte***ce iresponse : imessage
string message
int rpcid
}
imessage介面是乙個空介面,可以不用理會,兩個介面都實現了imessage介面。單單從介面名字上來看,irequest介面應該使用與請求訊息的,裡面乙個rpcid的屬性。iresponse介面是響應訊息的,定義了error錯誤碼屬性,message訊息內容屬性,rpcid屬性。
public inte***ce imessagedispatcher
imessagedispatcher介面,應該是用於派發訊息的介面。裡面有乙個派發訊息的方法dispatch。
public class messageattribute: baseattribute
public messageattribute(ushort opcode)
}
messageattribute特性中有乙個opcode,這是為特性修飾的類分配的訊息型別的識別碼,在指定特性的時候會直接分配。
public class messagehandlerattribute : baseattribute
}
ET框架學習 訊息系統之二
achannel類繼承自componentwithid。內部儲存了一些和網路傳輸相關的字段 aservice,ipendpoint等 還有兩個委託actionerrorcallback和actionreadcallback。這兩個委託和訊息傳輸的結果相關,分別用於儲存錯誤訊息和正確訊息的執行方法。在...
訊息系統 kafka之一 系統簡介
最近在研究訊息中介軟體kafka,下面簡單介紹一下kafka訊息系統,首先,為什麼使用訊息中介軟體,有哪些訊息中介軟體,為什麼選擇kafka 1.首先就是訊息系統的高效能,即使是非常普通的硬體可以支撐一秒幾十萬的訊息 2.訊息佇列對應用之間進行了解耦,應用之間不存在強依賴 3.訊息佇列可以對訊息資料...
HEVC學習之一編碼框架
h265 hevc仍舊沿用了h264的混合編碼框架,但是在變換 量化 熵編碼 幀內 幀間 以及環路濾波等模組中都引入了新的編碼技術。h265 hevc的編碼框架如圖 在編碼流程上依次為 分塊 變換 量化 熵編碼 1.幀內 主要是去除影象空間相關性。與h264相比,h265 hevc支援更多的幀內 模...