default_stringifier.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #pragma once
  2. //
  3. // Copyright (c) 2019-2024 Ivan Baidakou (basiliscos) (the dot dmol at gmail dot com)
  4. //
  5. // Distributed under the MIT Software License
  6. //
  7. #include "../messages.hpp"
  8. #include "../message_stringifier.h"
  9. #if defined(_MSC_VER)
  10. #pragma warning(push)
  11. #pragma warning(disable : 4251)
  12. #endif
  13. namespace rotor {
  14. struct subscription_point_t;
  15. namespace misc {
  16. /** \struct default_stringifier_t
  17. * \brief Default stringifier of rotor messages
  18. *
  19. * The custom message stringifier should override the `try_visit` method
  20. * and do message stringification of own custom messages, and only then
  21. * call `try_visit` of the `default_stringifier`.
  22. *
  23. * The stringifier is potentially slow and should be used for
  24. * debugging or problems identification.
  25. *
  26. */
  27. struct ROTOR_API default_stringifier_t : message_stringifier_t,
  28. protected message_visitor_t,
  29. protected message::unsubscription_t::visitor_t,
  30. protected message::unsubscription_external_t::visitor_t,
  31. protected message::subscription_t::visitor_t,
  32. protected message::external_subscription_t::visitor_t,
  33. protected message::commit_unsubscription_t::visitor_t,
  34. protected message::handler_call_t::visitor_t,
  35. protected message::init_request_t::visitor_t,
  36. protected message::init_response_t::visitor_t,
  37. protected message::start_trigger_t::visitor_t,
  38. protected message::shutdown_trigger_t::visitor_t,
  39. protected message::shutdown_request_t::visitor_t,
  40. protected message::shutdown_response_t::visitor_t,
  41. protected message::create_actor_t::visitor_t,
  42. protected message::spawn_actor_t::visitor_t,
  43. protected message::registration_request_t::visitor_t,
  44. protected message::registration_response_t::visitor_t,
  45. protected message::deregistration_notify_t::visitor_t,
  46. protected message::deregistration_service_t::visitor_t,
  47. protected message::discovery_request_t::visitor_t,
  48. protected message::discovery_response_t::visitor_t,
  49. protected message::discovery_promise_t::visitor_t,
  50. protected message::discovery_future_t::visitor_t,
  51. protected message::discovery_cancel_t::visitor_t,
  52. protected message::link_request_t::visitor_t,
  53. protected message::link_response_t::visitor_t,
  54. protected message::unlink_notify_t::visitor_t,
  55. protected message::unlink_request_t::visitor_t,
  56. protected message::unlink_response_t::visitor_t {
  57. void stringify_to(std::ostream &, const message_base_t &) const override;
  58. bool try_visit(const message_base_t &message) const override;
  59. private:
  60. void on(const message::unsubscription_t &) override;
  61. void on(const message::unsubscription_external_t &) override;
  62. void on(const message::subscription_t &) override;
  63. void on(const message::external_subscription_t &) override;
  64. void on(const message::commit_unsubscription_t &) override;
  65. void on(const message::handler_call_t &) override;
  66. void on(const message::init_request_t &) override;
  67. void on(const message::init_response_t &) override;
  68. void on(const message::start_trigger_t &) override;
  69. void on(const message::shutdown_trigger_t &) override;
  70. void on(const message::shutdown_request_t &) override;
  71. void on(const message::shutdown_response_t &) override;
  72. void on(const message::create_actor_t &) override;
  73. void on(const message::spawn_actor_t &) override;
  74. void on(const message::registration_request_t &) override;
  75. void on(const message::registration_response_t &) override;
  76. void on(const message::deregistration_notify_t &) override;
  77. void on(const message::deregistration_service_t &) override;
  78. void on(const message::discovery_request_t &) override;
  79. void on(const message::discovery_response_t &) override;
  80. void on(const message::discovery_promise_t &) override;
  81. void on(const message::discovery_future_t &) override;
  82. void on(const message::discovery_cancel_t &) override;
  83. void on(const message::link_request_t &) override;
  84. void on(const message::link_response_t &) override;
  85. void on(const message::unlink_notify_t &) override;
  86. void on(const message::unlink_request_t &) override;
  87. void on(const message::unlink_response_t &) override;
  88. mutable std::ostream *stream = nullptr;
  89. };
  90. } // namespace misc
  91. } // namespace rotor
  92. #if defined(_MSC_VER)
  93. #pragma warning(pop)
  94. #endif