2
語境
首先一些上下文:一個Boost.Asio的服務器接收格式化如下請求:混合TCP ::的iostream和套接字操作與Boost.Asio的
- X字節的元數據以XML
- X字節的可選二進制數據
我們有一個採用std :: istream的XML解析器,因此只需將tcp :: iostream傳遞給此函數就很簡單。下面的二進制數據可以是沉重的,所以直到我們讀取所有數據,我們應該異步讀-say 500ko-的數據包。
問題
我們可以使用TCP :: iostream的第一,然後使用async_read與強調socket_streambuf?當然,這是確定的編制,但確實插槽上的讀操作正確使用TCP :: iostream的內部緩衝區? (即使讀取元數據後,這可能不是空的)。我想它應該尊重Liskov替代原則,但我更願意確定。
我們能否從一種方法切換到另一種,其中/每當我們想要的嗎?