Cyber Classloader : https://zhuanlan.zhihu.com/p/91322837
Cyber Component : https://zhuanlan.zhihu.com/p/116782645
component的工作流程大致如下:
- 通過繼承"cyber::Component",用戶自定義一個模塊,并且實(shí)現(xiàn)"Init()"和"Proc()"函數(shù)。編譯生成".so"文件。
- 通過classloader加載component模塊到內(nèi)存,創(chuàng)建component對象,調(diào)用"Initialize()"初始化。(Initialize中會調(diào)用Init)
- 創(chuàng)建協(xié)程任務(wù),并且注冊"Process()"回調(diào),當(dāng)數(shù)據(jù)到來的時候,喚醒對象的協(xié)程任務(wù)執(zhí)行"Process()"處理數(shù)據(jù)。(Process會調(diào)用Proc)
DataVisitor和DataDispatcher : https://zhuanlan.zhihu.com/p/117318368
數(shù)據(jù)的訪問都是通過"DataVisitor"來實(shí)現(xiàn),數(shù)據(jù)的分發(fā)通過"DataDispatcher"來實(shí)現(xiàn)。reader中也是通過DataVisitor來訪問數(shù)據(jù),在reader中訂閱對應(yīng)的DataDispatcher。
也就是說如果要訂閱一個通道,首先是在reader中注冊消息的topic,綁定DataDispatcher,之后對應(yīng)通道的消息到來之后,觸發(fā)DataDispatcher分發(fā)消息,而DataDispatcher通過DataVisitor中的Notify喚醒協(xié)程,從DataVisitor中獲取消息,并執(zhí)行協(xié)程中綁定的回調(diào)函數(shù),以上就是整個消息的收發(fā)過程。
數(shù)據(jù)處理流程 : https://zhuanlan.zhihu.com/p/115046708

Cyber通信上層:https://blog.csdn.net/qq_25762163/article/details/103803032
Cyber通信底層:https://blog.csdn.net/qq_25762163/article/details/103895527
Cyber C++共享內(nèi)存通信的實(shí)現(xiàn): https://blog.csdn.net/qq_25762163/article/details/103945289
Apollo 3.5 Cyber 多進(jìn)程通訊模塊 - Transport (Shared Memory篇):https://blog.csdn.net/weixin_44450715/article/details/86314193