boost asio async_read_until:如何从自定义MatchCondition中引发错误?

时间:2011-01-31 12:43:37

标签: c++ boost network-programming boost-asio

我正在尝试优化具有混合模式协议的应用层协议(用于元信息,握手,确认等的线路协议和用于数据的二进制)。在客户端等待ACK的状态下,我做

async_read_until(socket, buffer, untill_crlf_maxbytes_1024_match_condition, handler);

根据记录的here async_read_until实现untill_crlf_maxbytes_1024_match_condition的位置。

这里的想法是读取直到CR + LF,但等待只读取1024个字节,这样如果有任何怪异的事情继续发生,如果套接字得到一些垃圾,它就不会继续读取。

我的问题是,在这种情况下从untill_crlf_maxbytes_1024_match_condition提出错误是个好主意吗?如何在该场景中引发错误?如果不是最好的选择?

1 个答案:

答案 0 :(得分:0)

引发错误你的意思是抛出异常吗?如果是这样,这是一个坏主意,因为boost asio的大多数功能都有两个版本:抛出异常并返回错误代码。错误代码对于boost asio的异步性质非常有用。

您可以针对所有情况(包括错误)从true返回match condition。只检查handler

中的错误