關於一個通信層的設計

通信層通常作爲一個軟件的底層,負責與外界打交道。  
這裏的通信特指異步通信,發出的請求可能得不到響應,可能很久才響應,也可能返回無效響應。但爲了請求一方的上層能夠正常工作,一個通信層應該能完全應付這些情況。以下是總結的幾點,不分先後,同等重要。

每個任務都有唯一的身份標識。

每個已發送請求的任務都進入已發送隊列(寫到這裏想起了ril.java),任務完成(返回了響應結果)時,憑藉身份標識到已發送隊列中找回自己,完成剩下的操作。

服務器返回的響應結果必須包含身份標識。

由一個線程負責清理掉已發送隊列的超時任務。

通信層保證不論響應如何都必須給調用層一個結果。

有一個專門的隊列緩存待發送的任務(ril的設計是發送和接收都是一個專門的線程)。

爲了處理上的方便,任務都以某種格式封裝,從任務池裏獲取(爲了唯一的身份標識)。

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