我正在用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?我如何才能識別結束標籤並調用閱讀處理程序?