live555分析(二) - 客戶端讀寫回調的設置

live555邏輯還是挺...嗯,讀過代碼的人都明白這個點的意思。

對於doEventLoop()暫不作深入分析,只需要記得它是在while(1)一個無限循環裏,一直調用SingleStep()方法即可。其邏輯關係可參考下圖

在SinleStep()中的fReadSet和fExceptionSet的設置,發生在GenericMediaServer的ClientConnection對象的構造函數中(setBackgroundHandling()的readable和exception,且該事件發生後的回調爲incomingRequestHandler方法)。

總結:在創建RTSPServer時,將客戶端連接的回調函數傳入,一旦有客戶端連入該服務端的socket,則觸發incomingConnectionHandler,進而創建ClientConnection,在創建RTSPClientConnection時,則設置了客戶端的read和excetion的事件,並等待客戶端發送數據進而觸發read或exception事件。這樣通過在SingleStep的循環執行,每次觸發客戶端的read和exception事件進行執行對應的RTSP任務來完成RTSP的交互,完成服務端與客戶端的RTSP基礎交互任務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章