12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #pragma once
- #include "actor_base.h"
- #include "messages.hpp"
- #include <unordered_map>
- #include <set>
- #include <list>
- namespace rotor {
- struct registry_t : public actor_base_t {
- using actor_base_t::actor_base_t;
- void configure(plugin::plugin_base_t &plugin) noexcept override;
-
- virtual void on_reg(message::registration_request_t &request) noexcept;
-
- virtual void on_dereg_service(message::deregistration_service_t &message) noexcept;
-
- virtual void on_dereg(message::deregistration_notify_t &message) noexcept;
-
- virtual void on_discovery(message::discovery_request_t &request) noexcept;
-
- virtual void on_promise(message::discovery_promise_t &request) noexcept;
-
- virtual void on_cancel(message::discovery_cancel_t ¬ify) noexcept;
-
- template <typename T> auto &access() noexcept;
- protected:
-
- using promise_ptr_t = intrusive_ptr_t<message::discovery_promise_t>;
-
- using promises_list_t = std::list<promise_ptr_t>;
-
- using registered_map_t = std::unordered_map<std::string, address_ptr_t>;
-
- using registered_names_t = std::set<std::string>;
-
- using revese_map_t = std::unordered_map<address_ptr_t, registered_names_t>;
-
- registered_map_t registered_map;
-
- revese_map_t revese_map;
-
- promises_list_t promises;
- };
- }
|