我正在用Boost编写服务器,非常简单 - 接受XML消息,处理,回复。但是我在告诉它什么时候停止阅读时遇到了麻烦。boost :: asio :: async_read texutal停止条件?
这就是我现在所拥有的:(_index是到其中的数据读入的缓冲区)
std::size_t tcp_connection::completion_condition(const boost::system::error_code& error,
std::size_t bytes_transferred)
{
int ret = -1;
std::istream is(&_index);
std::string s;
is >> s;
if (s.find("</end_tag>") != std::string.npos) ret = 0;
return ret;
}
void tcp_connection::start()
{
// Get index from server
boost::asio::async_read(_socket, _index, &(tcp_connection::completion_condition),
boost::bind(&tcp_connection::handle_read, shared_from_this(), boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
这并不编译,因为我必须定义completion_condition静态通过它来async_read ;我无法将_index定义为静态的,因为(显然)我需要它是针对该类的。
有没有其他的方法给参数completion_condition?我如何才能识别结束标签并调用阅读处理程序?