Improve Async::StateMachine stability

Fixes #589 issue with ReflectorLogic, no reconnect after IP failure.
This commit is contained in:
Tobias Blomberg 2022-08-04 09:02:17 +02:00
parent c0266909f6
commit 7ebd9ed530
2 changed files with 11 additions and 4 deletions

View File

@ -171,15 +171,15 @@ class StateMachine
[&](Timer*) [&](Timer*)
{ {
assert(m_state != nullptr); assert(m_state != nullptr);
static_cast<StateTopBaseT*>(m_state)->timeoutEvent();
clearTimeout(); clearTimeout();
static_cast<StateTopBaseT*>(m_state)->timeoutEvent();
}); });
m_at_timer.expired.connect( m_at_timer.expired.connect(
[&](AtTimer*) [&](AtTimer*)
{ {
assert(m_state != nullptr); assert(m_state != nullptr);
static_cast<StateTopBaseT*>(m_state)->timeoutAtEvent();
clearTimeoutAt(); clearTimeoutAt();
static_cast<StateTopBaseT*>(m_state)->timeoutAtEvent();
}); });
} }
@ -299,6 +299,10 @@ class StateMachine
*/ */
void setTimeout(int timeout_ms) void setTimeout(int timeout_ms)
{ {
#ifdef ASYNC_STATE_MACHINE_DEBUG
std::cout << "### StateMachine: setTimeout(" << timeout_ms << ")"
<< std::endl;
#endif
m_timer.setTimeout(timeout_ms); m_timer.setTimeout(timeout_ms);
m_timer.setEnable(true); m_timer.setEnable(true);
} }
@ -327,6 +331,9 @@ class StateMachine
*/ */
void clearTimeout(void) void clearTimeout(void)
{ {
#ifdef ASYNC_STATE_MACHINE_DEBUG
std::cout << "### StateMachine: clearTimeout()" << std::endl;
#endif
m_timer.setEnable(false); m_timer.setEnable(false);
} }

View File

@ -8,10 +8,10 @@ QTEL=1.2.4.99.5
LIBECHOLIB=1.3.3.99.2 LIBECHOLIB=1.3.3.99.2
# Version for the Async library # Version for the Async library
LIBASYNC=1.6.99.22 LIBASYNC=1.6.99.23
# SvxLink versions # SvxLink versions
SVXLINK=1.7.99.70 SVXLINK=1.7.99.71
MODULE_HELP=1.0.0 MODULE_HELP=1.0.0
MODULE_PARROT=1.1.1 MODULE_PARROT=1.1.1
MODULE_ECHO_LINK=1.5.99.3 MODULE_ECHO_LINK=1.5.99.3