【问题标题】:Boost asio async_read (async_write) wrapper提升 asio async_read (async_write) 包装器
【发布时间】:2011-07-02 23:44:58
【问题描述】:

我正在尝试在 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 流... 唯一的问题是,我似乎没有找到每个参数的定义来将它们传递给 boost::asio::async_read (namespaces, etc...)

任何帮助将不胜感激!谢谢

【问题讨论】:

    标签: c++ asynchronous boost-asio


    【解决方案1】:

    您的主要要求似乎是“无缝使用 SSL 和非 SSL 流”。为此,您可以以公开您需要使用的函数的方式包装各种流类型。

    您如何做到这一点的一部分是决定您将如何进行内存管理。 MutableBufferSequence 不是一种类型,它为要在该上下文中使用的类型定义了一组要求。

    如果您打算使用少数几种方法中的一种,您可以在接口中使用它们(只要它满足 MutableBufferSequence/ConstBufferSequence 要求,就可以了)。这样做的缺点是缓冲区管理成为界面的一部分。

    如果您想保持 asio 缓冲区管理的灵活性,那么您可以

    • 根据流类型对代码进行模板化,以实现无缝的 SSL/非 SSL 要求。

    • 使用缓冲区类型的模板化方法为各种流类型创建包装器。

    (更新了回复;我不应该在不到两分钟的时间里回答这样的问题!)

    【讨论】:

    • 复杂解决方案的方法,但似乎是唯一的......我想我现在会推迟使用 ssl 和非 ssl 流的能力。谢谢!
    猜你喜欢
    • 2018-09-22
    • 2018-04-05
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多