test_supervisor.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "test_supervisor.h"
  2. namespace to {
  3. struct queue{};
  4. }
  5. template <> inline auto &rotor::supervisor_t::access<to::queue>() noexcept { return queue; }
  6. using namespace syncspirit::test;
  7. void supervisor_t::do_start_timer(const r::pt::time_duration &interval, r::timer_handler_base_t &handler) noexcept {
  8. timers.emplace_back(&handler);
  9. }
  10. void supervisor_t::do_cancel_timer(r::request_id_t timer_id) noexcept {
  11. auto it = timers.begin();
  12. while (it != timers.end()) {
  13. auto& handler = *it;
  14. if (handler->request_id == timer_id) {
  15. auto& actor_ptr = handler->owner;
  16. on_timer_trigger(timer_id, true);
  17. timers.erase(it);
  18. return;
  19. } else {
  20. ++it;
  21. }
  22. }
  23. assert(0 && "should not happen");
  24. }
  25. void supervisor_t::start() noexcept {}
  26. void supervisor_t::shutdown() noexcept { do_shutdown(); }
  27. void supervisor_t::enqueue(r::message_ptr_t message) noexcept {
  28. locality_leader->access<to::queue>().emplace_back(std::move(message));
  29. }