提升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流。。。唯一的问题是,我似乎没有找到每个参数的定义来将它们传递给boost::asio::async_read(命名空间等(
任何帮助都将不胜感激!感谢
您的主要需求似乎是"无缝使用SSL和非SSL流。"为此,您可以以公开需要使用的函数的方式包装各种流类型。
如何做到这一点的一部分是决定如何进行内存管理。MutableBufferSequence不是一个类型,它为要在该上下文中使用的类型定义了一组要求。
如果你要使用少量方法中的一种,你可以在接口中使用它们(只要它符合MutableBufferSequence/ConstBufferSequence的要求,就可以了(。这样做的缺点是缓冲区管理成为接口的一部分。
如果你想保持asio缓冲区管理的灵活性,那么你可以
-
将代码模板化为流类型,以实现无缝的SSL/非SSL要求。
-
使用缓冲区类型上的模板化方法为各种流类型创建一个包装器。
(更新了回复;当我的时间不到两分钟时,我不应该试图回答这样的问题!(
相关文章:
- 为什么std::async使用同一个线程运行函数
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 使用用户定义的参数调用future/async并调用类方法
- 使用 std::async 时死锁,将来作为成员
- 为什么我不能将引用作为 std::async 的函数参数传递
- std::async from std::async in windows xp
- Google Cloud Pubsub Async Streaming API in C++
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- Qt 写入 xml: QIODevice::write (QFile, "D:/logs.xml" ): 设备未打开
- write() 和 read() 中几乎没有混淆
- OpenCV-contrib/Python/Windows:Tracker.write() 在 matrix_wrap.
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- std::async 不会立即调用
- async中没有匹配的函数(模板中未解析的类型)
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- BLE gattServer.write()重载函数
- std::async 如果线程是从 DLL 创建的,则会阻止进程退出?