繁体   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