提升Asio Peek和完成条件
Boost Asio Peek and Completion Condition
我正在使用Boost Asio来建立套接字连接。我希望在不消耗数据的情况下查看缓冲区中的数据,并且我希望使用完成条件来确保我可以在必要时停止阻塞调用。
我可以从basic_stream_socket::receive:
获得peek功能template<
typename MutableBufferSequence>
std::size_t receive(
const MutableBufferSequence & buffers,
socket_base::message_flags flags,
boost::system::error_code & ec);
一个可能的message_flags是basic_stream_socket::message_peek。但是,此调用将阻塞,直到至少读取一个字节或发生错误。我可以从read:
中获得完成条件功能template<
typename SyncReadStream,
typename MutableBufferSequence,
typename CompletionCondition>
std::size_t read(
SyncReadStream & s,
const MutableBufferSequence & buffers,
CompletionCondition completion_condition,
boost::system::error_code & ec);
我可以提供一个completion_condition方法来检查调用是否应该在继续之前中止。
我的问题是这样的:是否有一种方法来获得一个message_flags参数和一个completion_condition参数在同一方法调用?
我想在不消耗它的情况下偷看缓冲区中的数据,我想用一个完成条件来确保我可以必要时停止阻塞调用
不要这样做。使用异步方法,如async_read()
和async_write()
。
cancel()
命令停止未完成的异步操作。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 提升 ASIO 无法识别计时器对象
- 基于多个条件处理地图中的所有元素
- 条件constexpr函数
- 无论条件是否为true,if总是在c++中执行
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 基于模板值的条件变量
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::async_read_until 具有自定义匹配条件运算符重载混淆
- 提升 asio async_read_until在匹配条件下停止读取
- boost::asio::async_read在不满足完成条件的情况下结束
- 在1个线程上运行的boost::asio::io_service如何唤醒等待条件
- 提升Asio Peek和完成条件
- 哪些Boost.Asio调用返回哪些Boost错误代码/条件
- 在有条件的情况下,连接到C++和Boost Asio中的套接字
- 提升 ASIO 和条件变量 - 奇怪的输出
- 等待条件的非线程替代方案.(编辑:Proactor模式与boost.asio?)
- 提升::asio::async_read 不会在条件下停止