有限状态机的C++实现(2)-bayonet开源网络服务器框架
生活随笔
收集整理的這篇文章主要介紹了
有限状态机的C++实现(2)-bayonet开源网络服务器框架
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有限狀態機的C++實現(2)-bayonet開源網絡服務器框架 | Vimer的程序世界
有限狀態機的C++實現(2)-bayonet開源網絡服務器框架
Published on 二月 18, 2011 6,009接著上一篇文章: 有限狀態機的C++實現(1)-epoll狀態機,我們今天來介紹更復雜和深入的部分。
為什么會在標題中提到bayonet這個開源項目呢?筆者本人一直想要寫一套架構優美、功能完善的異步server框架,也看過很多朋友、同事實現的版本,雖然功能上基本能滿足需求,但是架構上我卻始終覺得是有瑕疵的,直到后來和同事討論,發現可以讓一個客戶端請求的到來作為一個session,而之后的每一次與其他server的交互都可以看作是一次狀態轉化,才感覺架構比較合理了。
簡單來說即,一個session從開始到介紹會經歷兩種狀態機的變化:
- 1.業務邏輯層面的狀態變化,例如先驗證登錄態,再驗證權限,再獲取用戶資料
- 2.每一個與其他server交互的socket自身的狀態變化,如recv、send、等,而socket的狀態變化會觸發邏輯層的狀態變化。
按照這種思路,目前的代碼開發已經完成了70%,即可以正常的進行一個session的開始和結束,主要還缺一些細節的代碼,比如超時的檢測及超時之后的處理,健全的統計之類。好了,我們來用vs看一下代碼的整體類圖(圖壓縮比較嚴重,請單擊后查看):
每個類的用處已經在途中簡單說明了,這里就不再贅述,我們重點來看一下用這個框架來實現一個邏輯server時需要做哪些事情。
svr2目錄下的main.cpp即實現了一個最簡單的server,我們按部分來看其實現:
總結
以上是生活随笔為你收集整理的有限状态机的C++实现(2)-bayonet开源网络服务器框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JFinal interceptor -
- 下一篇: HDU-2332 机器人的舞蹈 递推