Re: [Boost-users] [asio] how to specify a timeout?
Yes, timeout and read event have two different callback, in read callback you have to m_timer->cancel() to avoid receive timeout also.
----- Messaggio originale -----
Da: Arkadiy Vertleyb
Use an asio::deadline_timer
Example:
asio::io_service m_ioService; asio::deadline_timer * m_timer; m_timer = new asio::deadline_timer(m_ioService);
m_timer->expires_from_now( boost::posix_time::seconds(t) ); m_timer->async_wait( boost::bind(&Foo:handle_timeout, this, asio::placeholders::error) ); asio::async_read( *m_socket, asio::buffer( m_msg.header(), m_msg.header_length() ),
boost::bind(&Foo::handle_read_header,
this, asio::placeholders::error) );
Thanks for your response. Still, it's not clear to me how to use it. In your example it seems that read operation and timeout are two independent things. How do I make sure only one of these two fires? Is it possile to cancel read operation once timout has been recieved? Thanks, Arkadiy _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users ___________________________________ L'email della prossima generazione? Puoi averla con la nuova Yahoo! Mail: http://it.docs.yahoo.com/nowyoucan.html
"Andrea Bartoli"
Yes, timeout and read event have two different callback, in read callback you have to m_timer->cancel() to avoid receive timeout also.
Right, but how do I do the oposite? I mean, in the timeout callback I have to cancel read... Is it possible to do this? Regards, Arkadiy
participants (2)
-
Andrea Bartoli
-
Arkadiy Vertleyb