| 175 | } |
| 176 | |
| 177 | void TriggerManager::update() |
| 178 | { |
| 179 | Debug::Log->trace("<TriggerManager> Updating TriggerManager"); |
| 180 | for (auto& scheduler : m_schedulers) |
| 181 | { |
| 182 | if (scheduler->m_state == CallbackSchedulerState::Ready) |
| 183 | { |
| 184 | const Time::TimeUnit elapsed = Time::epoch() - scheduler->m_start; |
| 185 | if ((scheduler->m_wait && elapsed >= scheduler->m_after) |
| 186 | || (scheduler->m_repeat && elapsed >= scheduler->m_every)) |
| 187 | { |
| 188 | scheduler->execute(); |
| 189 | } |
| 190 | } |
| 191 | } |
| 192 | m_schedulers.erase(std::remove_if(m_schedulers.begin(), m_schedulers.end(), |
| 193 | [](auto& scheduler) { |
| 194 | return scheduler->m_state |
| 195 | == CallbackSchedulerState::Done; |
| 196 | }), |
| 197 | m_schedulers.end()); |
| 198 | } |
| 199 | |
| 200 | void TriggerManager::clear() |
| 201 | { |