ET框架學習 訊息系統之一

2021-09-30 19:05:24 字數 2135 閱讀 9946

opcodetypecomponent元件和messagedispathercomponent元件都是訊息系統的組成部分。這裡就來好好捋一捋et的訊息系統。從我目前看到現在來說,這個訊息系統包括一系列的事件介面,特性,和訊息型別的識別碼等等部分,這裡先撇開前後端通訊部分的訊息。

public inte***ce imhandler

imhandler介面是乙個比較基本的介面,可以看到其內部有乙個hadle方法和乙個getmessagetype方法。handle方法接受sessionobject兩個型別的引數。這兩個方法在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支援更多的幀內 模...