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
21 const mbox_t & mbox,
22 impl::mbox_core_t & mbox_core )
23 :
24 m_name( std::move(name) ),
26 m_mbox( mbox )
27{
28}
29
31{
32 m_mbox_core->destroy_mbox( m_name );
33}
34
35mbox_id_t
37{
38 return m_mbox->id();
39}
40
41void
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
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
59{
60 if( default_global_mbox_namespace() == m_name.m_namespace )
61 return m_name.m_name;
62 else
63 return m_name.m_namespace + "::" + m_name.m_name;
64}
65
68{
69 return m_mbox->type();
70}
71
72void
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{
79 m_mbox->do_deliver_message(
80 delivery_mode,
81 msg_type,
82 message,
83 redirection_deep );
84}
85
86void
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
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
105{
106 return m_mbox->environment();
107}
108
109} /* namespace impl */
110
111} /* namespace so_5 */
Interface for message sink.
An interface of delivery filter object.
Definition mbox.hpp:62
SObjectizer Environment.
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.
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.
Details of SObjectizer run-time implementations.
Definition agent.cpp:905
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