我正在尝试使用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(名称空间等等)
任何帮助将不胜感激!感谢
答案 0 :(得分:0)
您的主要要求似乎是“无缝使用SSL和非SSL流”。为此,您可以以暴露需要使用的函数的方式包装各种流类型。
你如何做到这一点的一部分是决定你将如何进行内存管理。 MutableBufferSequence不是一个类型,它为在该上下文中使用的类型定义了一组要求。
如果您打算使用少量方法中的一种,您可以在界面中使用它们(只要它符合MutableBufferSequence / ConstBufferSequence要求,相应)。这样做的缺点是缓冲区管理成为界面的一部分。
如果您想保持asio缓冲区管理的灵活性,那么您可以
将您的代码模板化为流类型,以实现无缝的SSL /非SSL要求。
使用缓冲区类型的模板化方法为各种流类型创建包装器。
(更新后的回复;我不应该在不到两分钟的时间内回复这样的问题!)