2011-01-31 47 views
1

我正在尝试优化具有混合模式协议(元信息,握手,确认等的线协议以及二进制数据)的应用层协议。在客户端等待ACK的状态,我做boost asio async_read_until:如何从自定义MatchCondition引发错误?

async_read_until(socket, buffer, untill_crlf_maxbytes_1024_match_condition, handler); 

untill_crlf_maxbytes_1024_match_condition实现acxcording到async_read_until记录here

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

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

回答

0

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

对于包括错误在内的所有情况,您可以从match condition返回true。只是检查你的错误handler

+0

感谢AndyT,但据我所知,从链接的文档,bool返回值只建议async_read是否可以停止或不。它并没有告诉处理程序有错误。由于错误,我的意思是在目前为止读取的1024字节中未找到CR + LF。 – 2011-01-31 16:14:55

相关问题