| 550 | const ReactorWrapper::TimerId ReactorWrapper::InvalidTimerId = -1; |
| 551 | |
| 552 | ReactorWrapper::TimerId ReactorWrapper::schedule(RcEventHandler& handler, |
| 553 | const void* arg, |
| 554 | const TimeDuration& delay, |
| 555 | const TimeDuration& interval) |
| 556 | { |
| 557 | #if OPENDDS_CONFIG_BOOTTIME_TIMERS |
| 558 | const ACE_Time_Value earliest_before = timer_heap_.is_empty() ? ACE_Time_Value::max_time : timer_heap_.earliest_time(); |
| 559 | const TimerId tid = timer_heap_.schedule(&handler, arg, MonotonicTimePoint::now().value() + delay.value(), interval.value()); |
| 560 | const ACE_Time_Value earliest_after = timer_heap_.earliest_time(); |
| 561 | if (earliest_after < earliest_before) { |
| 562 | if (!arm()) { |
| 563 | return InvalidTimerId; |
| 564 | } |
| 565 | } |
| 566 | return tid; |
| 567 | #else |
| 568 | return reactor_->schedule_timer(&handler, arg, delay.value(), interval.value()); |
| 569 | #endif |
| 570 | } |
| 571 | |
| 572 | void ReactorWrapper::cancel(TimerId timer) |
| 573 | { |