2011-01-31 51 views
1

我正在嘗試優化具有混合模式協議(元信息,握手,確認等的線協議以及二進制數據)的應用層協議。在客戶端等待ACK的狀態,我做boost asio async_read_until:如何從自定義MatchCondition引發錯誤?

async_read_until(socket, buffer, untill_crlf_maxbytes_1024_match_condition, handler); 

untill_crlf_maxbytes_1024_match_condition實現acxcording到async_read_until記錄here

這裏的想法是讀取直到CR + LF,但等待只讀取1024個字節,這樣如果有什麼特別的事情發生,如果套接字得到一些垃圾,它就不會繼續讀取。

我的問題是,在untill_crlf_maxbytes_1024_match_condition這種情況下引發錯誤是個好主意嗎?我如何在這種情況下提出錯誤?如果不是最好的選擇?

回答

0

引發錯誤你的意思是拋出異常?如果是這樣,這是一個壞主意,因爲boost asio的大多數函數有兩個版本:拋出異常並返回錯誤代碼。錯誤代碼對於boost asio的異步特性非常有用。

對於包括錯誤在內的所有情況,您可以從match condition返回true。只是檢查你的錯誤handler

+0

感謝AndyT,但據我所知,從鏈接的文檔,bool返回值只建議async_read是否可以停止或不。它並沒有告訴處理程序有錯誤。由於錯誤,我的意思是在目前爲止讀取的1024字節中未找到CR + LF。 – 2011-01-31 16:14:55

相關問題