簡體   English   中英

提升 asio async_read (async_write) 包裝器

[英]Boost asio async_read (async_write) wrapper

我正在嘗試在 boost::asio::ip::tcp::socket 上編寫一個包裝器

像這樣的東西:

class Socket {
  public:
    void async_read(AsyncReadStream & s,                     
                    const boost::asio::MutableBufferSequence & buffers,   
                    CompletionCondition completion_condition,
                    ReadHandler handler) {};
};

所以我可以無縫地使用 ssl 和非 SSL stream ......唯一的事情是,我似乎沒有找到每個參數的定義來將它們傳遞給 boost::asio::async_read (命名空間等) ..)

任何幫助,將不勝感激 ! 謝謝

您的主要要求似乎是“無縫使用 SSL 和非 SSL 流”。 為此,您可以包裝各種 stream 類型,以公開您需要使用的功能。

您如何做到這一點的一部分是決定您將如何進行 memory 管理。 MutableBufferSequence 不是一種類型,它為要在該上下文中使用的類型定義了一組要求。

如果您打算使用少數幾種方法中的一種,您可以在接口中使用它們(只要它滿足 MutableBufferSequence/ConstBufferSequence 要求,就可以了)。 這樣做的缺點是緩沖區管理成為接口的一部分。

如果您想保持 asio 緩沖區管理的靈活性,那么您可以

  • 在 stream 類型上模板化您的代碼,以實現無縫的 SSL/非 SSL 要求。

  • 使用緩沖區類型的模板化方法為各種 stream 類型創建一個包裝器。

(更新的回復;當我不到兩分鍾的時間,我不應該嘗試回答這樣的問題!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM