我是爲學習目的在C++中編寫UDP客戶端/服務器協議,其中使用處理程序實現了從我的應用程序的服務器組件到應用程序其餘部分的通信。當創建一個「Handler Registration」類型的體系結構時,我應該如何傳遞處理程序?
例如,我可能會針對值1註冊Authorization組件,然後針對值爲2註冊一個TextMessage組件。然後,客戶端首先向Authorization組件發送一個或兩個消息以登錄,然後開始向TextMessage發送文本消息處理程序。
這是我現在有:
class NetworkHandler {
virtual void handleMessage(const endpoint & endpoint, const buffer & message) = 0;
};
那些希望註冊爲成分簡單地繼承NetworkHandler並調用
udpServer.addHandler(handler);
不過,我在與確定的幾個問題的任何類我應該怎樣通過處理程序,成爲新手和所有人。
我應該通過引用傳遞處理程序嗎?這很簡單方便,但是所有權問題就起作用了 - 調用函數應該不必擔心無緣無故地繼續引用。
我應該複製處理程序嗎?這也很容易和方便,但是這裏有一個問題:我的處理程序是否可以複製,或者是否需要從課堂外引用我的處理程序。
我想知道的是,這種情況的常見最佳做法是什麼?對不起,牆上的文字。