|
Boost Users : |
Subject: Re: [Boost-users] [asio] How to deal with no-connect and/or read-timeout
From: Marat Abrarov (abrarov_at_[hidden])
Date: 2013-06-25 11:00:35
> If the timer handler is called first, then you're done: initiate
> disconnection, etc.
> If the read handler is called first, you simply reset the timer (maybe
> cancel and then reset).
> I honestly don't know if you have to worry about a race condition (timer
> going off while handler for async_read is executing), or if a cancel /
> reschedule out of the async_read handler would preempt any other handlers.
> You might end up having to stick both the async_read and deadline_timer in
> the same strand; that would prohibit concurrent execution.
There is a good example:
http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/example/timeouts/se
rver.cpp
and a good article:
http://blog.think-async.com/2010/04/timeouts-by-analogy.html
and a rather heavy example: http://sourceforge.net/projects/asio-samples/
(see project named echo_server).
In general, you will need a state machine (or even few of them).
Regards,
Marat Abrarov.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net