access.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //
  2. // Copyright (c) 2019-2020 Ivan Baidakou (basiliscos) (the dot dmol at gmail dot com)
  3. //
  4. // Distributed under the MIT Software License
  5. //
  6. #pragma once
  7. #include "rotor.hpp"
  8. #include "rotor/registry.h"
  9. namespace rotor::test {
  10. namespace {
  11. namespace to {
  12. struct get_plugin {};
  13. struct on_timer_trigger {};
  14. struct state {};
  15. struct internal_infos {};
  16. struct mine_handlers {};
  17. struct actors_map {};
  18. struct points {};
  19. struct locality_leader {};
  20. struct parent_supervisor {};
  21. struct registry {};
  22. struct queue {};
  23. struct own_subscriptions {};
  24. struct request_map {};
  25. struct resources {};
  26. struct last_req_id {};
  27. struct promises {};
  28. struct discovery_map {};
  29. struct forget_link {};
  30. } // namespace to
  31. } // namespace
  32. bool empty(rotor::subscription_t &subs) noexcept;
  33. } // namespace rotor::test
  34. namespace rotor {
  35. template <> inline auto &actor_base_t::access<test::to::state>() noexcept { return state; }
  36. template <> inline auto &actor_base_t::access<test::to::resources>() noexcept { return resources; }
  37. template <> inline auto rotor::actor_base_t::access<test::to::get_plugin, const void *>(const void *identity) noexcept {
  38. return get_plugin(identity);
  39. }
  40. template <>
  41. inline auto rotor::actor_base_t::access<test::to::on_timer_trigger, request_id_t, bool>(request_id_t request_id,
  42. bool cancelled) noexcept {
  43. on_timer_trigger(request_id, cancelled);
  44. }
  45. template <> inline auto &rotor::subscription_t::access<test::to::internal_infos>() noexcept { return internal_infos; }
  46. template <> inline auto &rotor::subscription_t::access<test::to::mine_handlers>() noexcept { return mine_handlers; }
  47. template <> inline auto &rotor::plugin::plugin_base_t::access<test::to::own_subscriptions>() noexcept {
  48. return own_subscriptions;
  49. }
  50. template <> inline auto &plugin::child_manager_plugin_t::access<test::to::actors_map>() noexcept { return actors_map; }
  51. template <> inline auto &plugin::lifetime_plugin_t::access<test::to::points>() noexcept { return points; }
  52. template <> inline auto &plugin::resources_plugin_t::access<test::to::resources>() noexcept { return resources; }
  53. template <> inline auto &plugin::registry_plugin_t::access<test::to::discovery_map>() noexcept { return discovery_map; }
  54. template <> inline auto &rotor::supervisor_t::access<test::to::locality_leader>() noexcept { return locality_leader; }
  55. template <> inline auto &rotor::supervisor_t::access<test::to::parent_supervisor>() noexcept { return parent; }
  56. template <> inline auto &rotor::supervisor_t::access<test::to::registry>() noexcept { return registry_address; }
  57. template <> inline auto &rotor::supervisor_t::access<test::to::queue>() noexcept { return queue; }
  58. template <> inline auto &rotor::supervisor_t::access<test::to::request_map>() noexcept { return request_map; }
  59. template <> inline auto &rotor::supervisor_t::access<test::to::last_req_id>() noexcept { return last_req_id; }
  60. template <> inline auto &rotor::registry_t::access<test::to::promises>() noexcept { return promises; }
  61. } // namespace rotor