gpt4 book ai didi

c++ - Boost asio async_read (async_write) 包装器

转载 作者:太空宇宙 更新时间:2023-11-04 14:22:21 26 4
gpt4 key购买 nike

我正在尝试在 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(命名空间等...)

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

最佳答案

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

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

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

如果你想保持 asio 缓冲区管理的灵 active ,那么你可以

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

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

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

关于c++ - Boost asio async_read (async_write) 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com