Я смотрю на ASIO, например, в http://www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/example/timeouts/async_tcp_client.cppсрок действия таймера истекает, теперь что?
Вот что я имею реальные проблемы, чтобы понять:
- Почему handle_read перезвонить start_read снова?
- Что происходит, когда таймер истекает? Я не вижу никакой процедуры обратного вызова, предоставляемой таймеру.
аннулируются start_read()
{ // Установить срок для операции чтения. deadline_.expires_from_now (boost :: posix_time :: seconds (30));// Start an asynchronous operation to read a newline-delimited message. boost::asio::async_read_until(socket_, input_buffer_, '\n', boost::bind(&client::handle_read, this, _1));
}
недействительным handle_read (Const подталкивание :: Система :: error_code & ек)
{ если (stopped_) возвращение;if (!ec) { // Extract the newline-delimited message from the buffer. std::string line; std::istream is(&input_buffer_); std::getline(is, line); // Empty messages are heartbeats and so ignored. if (!line.empty()) { std::cout << "Received: " << line << "\n"; } start_read(); } else { std::cout << "Error on receive: " << ec.message() << "\n"; stop(); }
}