SObjectizer 5.8
Loading...
Searching...
No Matches
named_local_mbox.cpp
Go to the documentation of this file.
1/*
2 SObjectizer 5.
3*/
4
5#include <algorithm>
6
7#include <so_5/impl/named_local_mbox.hpp>
8
9namespace so_5
10{
11
12namespace impl
13{
14
15//
16// named_local_mbox_t
17//
18
19named_local_mbox_t::named_local_mbox_t(
21 const mbox_t & mbox,
22 impl::mbox_core_t & mbox_core )
23 :
24 m_name( std::move(name) ),
25 m_mbox_core( &mbox_core ),
26 m_mbox( mbox )
27{
28}
29
30named_local_mbox_t::~named_local_mbox_t()
31{
33}
34
35mbox_id_t
36named_local_mbox_t::id() const
37{
38 return m_mbox->id();
39}
40
41void
42named_local_mbox_t::subscribe_event_handler(
43 const std::type_index & type_wrapper,
44 abstract_message_sink_t & subscriber )
45{
46 m_mbox->subscribe_event_handler( type_wrapper, subscriber );
47}
48
49void
50named_local_mbox_t::unsubscribe_event_handler(
51 const std::type_index & type_wrapper,
52 abstract_message_sink_t & subscriber ) noexcept
53{
54 return m_mbox->unsubscribe_event_handler( type_wrapper, subscriber );
55}
56
57std::string
58named_local_mbox_t::query_name() const
59{
61 return m_name.m_name;
62 else
63 return m_name.m_namespace + "::" + m_name.m_name;
64}
65
67named_local_mbox_t::type() const
68{
69 return m_mbox->type();
70}
71
72void
73named_local_mbox_t::do_deliver_message(
74 message_delivery_mode_t delivery_mode,
75 const std::type_index & msg_type,
76 const message_ref_t & message,
77 unsigned int redirection_deep )
78{
80 delivery_mode,
81 msg_type,
82 message,
83 redirection_deep );
84}
85
86void
87named_local_mbox_t::set_delivery_filter(
88 const std::type_index & msg_type,
89 const delivery_filter_t & filter,
90 abstract_message_sink_t & subscriber )
91{
92 m_mbox->set_delivery_filter( msg_type, filter, subscriber );
93}
94
95void
96named_local_mbox_t::drop_delivery_filter(
97 const std::type_index & msg_type,
98 abstract_message_sink_t & subscriber ) noexcept
99{
100 m_mbox->drop_delivery_filter( msg_type, subscriber );
101}
102
104named_local_mbox_t::environment() const noexcept
105{
107}
108
109} /* namespace impl */
110
111} /* namespace so_5 */
virtual void unsubscribe_event_handler(const std::type_index &type_index, abstract_message_sink_t &subscriber) noexcept=0
Remove all message handlers.
virtual void subscribe_event_handler(const std::type_index &type_index, abstract_message_sink_t &subscriber)=0
Add the message handler.
virtual so_5::environment_t & environment() const noexcept=0
SObjectizer Environment for which the mbox is created.
virtual void drop_delivery_filter(const std::type_index &msg_type, abstract_message_sink_t &subscriber) noexcept=0
Removes delivery filter for message type and subscriber.
virtual void set_delivery_filter(const std::type_index &msg_type, const delivery_filter_t &filter, abstract_message_sink_t &subscriber)=0
Set a delivery filter for message type and subscriber.
virtual mbox_id_t id() const =0
Unique ID of this mbox.
virtual void do_deliver_message(message_delivery_mode_t delivery_mode, const std::type_index &msg_type, const message_ref_t &message, unsigned int redirection_deep)=0
Deliver message for all subscribers with respect to message limits.
virtual mbox_type_t type() const =0
Get the type of message box.
Interface for message sink.
An interface of delivery filter object.
Definition mbox.hpp:62
SObjectizer Environment.
void destroy_mbox(const full_named_mbox_id_t &name) noexcept
Remove a reference to the named mbox.
void set_delivery_filter(const std::type_index &msg_type, const delivery_filter_t &filter, abstract_message_sink_t &subscriber) override
Set a delivery filter for message type and subscriber.
mbox_id_t id() const override
Unique ID of this mbox.
void subscribe_event_handler(const std::type_index &type_wrapper, abstract_message_sink_t &subscriber) override
Add the message handler.
named_local_mbox_t(full_named_mbox_id_t full_name, const mbox_t &mbox, impl::mbox_core_t &mbox_core)
mbox_type_t type() const override
Get the type of message box.
void do_deliver_message(message_delivery_mode_t delivery_mode, const std::type_index &msg_type, const message_ref_t &message, unsigned int redirection_deep) override
Deliver message for all subscribers with respect to message limits.
impl::mbox_core_ref_t m_mbox_core
An utility for this mbox.
environment_t & environment() const noexcept override
SObjectizer Environment for which the mbox is created.
std::string query_name() const override
Get the mbox name.
void unsubscribe_event_handler(const std::type_index &type_wrapper, abstract_message_sink_t &subscriber) noexcept override
Remove all message handlers.
void drop_delivery_filter(const std::type_index &msg_type, abstract_message_sink_t &subscriber) noexcept override
Removes delivery filter for message type and subscriber.
const full_named_mbox_id_t m_name
Mbox name.
intrusive_ptr_t(T *obj) noexcept
Constructor for a raw pointer.
T * operator->() const noexcept
intrusive_ptr_t(const intrusive_ptr_t &o) noexcept
Copy constructor.
Details of SObjectizer run-time implementations.
Definition agent.cpp:780
std::string default_global_mbox_namespace()
Helper function that returns name of the default global namespace for named mboxes.
Private part of message limit implementation.
Definition agent.cpp:33
message_delivery_mode_t
Possible modes of message/signal delivery.
Definition types.hpp:172
mbox_type_t
Type of the message box.
Definition mbox.hpp:163
Full name for a named mbox.
Definition mbox_core.hpp:69
std::string m_name
Own name of the mbox.
Definition mbox_core.hpp:83
std::string m_namespace
Name of mbox namespace in that the mbox is defined.
Definition mbox_core.hpp:75