提升asio async_read(async_write)包装器

时间:2011-07-02 23:44:59

标签: c++ asynchronous boost-asio

我正在尝试使用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(名称空间等等)

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您打算使用少量方法中的一种,您可以在界面中使用它们(只要它符合MutableBufferSequence / ConstBufferSequence要求,相应)。这样做的缺点是缓冲区管理成为界面的一部分。

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

  • 将您的代码模板化为流类型,以实现无缝的SSL /非SSL要求。

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

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