supervisor_test.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. //
  3. // Copyright (c) 2019 Ivan Baidakou (basiliscos) (the dot dmol at gmail dot com)
  4. //
  5. // Distributed under the MIT Software License
  6. //
  7. #include "rotor/supervisor.h"
  8. #include <list>
  9. namespace rotor {
  10. namespace test {
  11. struct supervisor_config_test_t: public supervisor_config_t {
  12. const void *locality;
  13. supervisor_config_test_t(const pt::time_duration& shutdown_timeout_, const void *locality_,
  14. supervisor_policy_t policy_ = supervisor_policy_t::shutdown_self):
  15. supervisor_config_t {shutdown_timeout_, policy_}, locality{locality_} {
  16. }
  17. };
  18. struct supervisor_test_t : public supervisor_t {
  19. using timers_t = std::list<timer_id_t>;
  20. supervisor_test_t(supervisor_t *sup, const supervisor_config_test_t& config_);
  21. virtual void start_timer(const pt::time_duration &send, timer_id_t timer_id) noexcept override;
  22. virtual void cancel_timer(timer_id_t timer_id) noexcept override;
  23. timer_id_t get_timer(std::size_t index) noexcept;
  24. virtual void start() noexcept override;
  25. virtual void shutdown() noexcept override;
  26. virtual void enqueue(rotor::message_ptr_t message) noexcept override;
  27. virtual address_ptr_t make_address() noexcept override;
  28. state_t &get_state() noexcept { return state; }
  29. queue_t& get_leader_queue() { return get_leader().queue; }
  30. supervisor_test_t& get_leader() { return *static_cast<supervisor_test_t*>(locality_leader); }
  31. subscription_points_t &get_points() noexcept { return points; }
  32. subscription_map_t &get_subscription() noexcept { return subscription_map; }
  33. actors_map_t &get_children() noexcept { return actors_map; }
  34. request_map_t &get_requests() noexcept { return request_map; }
  35. const void *locality;
  36. timers_t active_timers;
  37. };
  38. } // namespace test
  39. } // namespace rotor