12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #include "address.hpp"
- #include "supervisor_config.h"
- #include "extended_error.h"
- #include <system_error>
- namespace rotor {
- struct supervisor_t;
- struct actor_base_t;
- using supervisor_ptr_t = intrusive_ptr_t<supervisor_t>;
- struct system_context_t : arc_base_t<system_context_t> {
- public:
-
- template <typename Supervisor = supervisor_t> auto create_supervisor();
-
- inline supervisor_ptr_t get_supervisor() noexcept { return supervisor; }
- system_context_t() = default;
- system_context_t(const system_context_t &) = delete;
- system_context_t(system_context_t &&) = delete;
- virtual ~system_context_t();
-
- virtual void on_error(actor_base_t *actor, const extended_error_ptr_t &ec) noexcept;
-
- virtual std::string identity() noexcept;
-
- template <typename T> auto &access() noexcept;
- private:
- friend struct supervisor_t;
- supervisor_ptr_t supervisor;
- };
- using system_context_ptr_t = intrusive_ptr_t<system_context_t>;
- }
|