Go to the documentation of this file.
9 #ifndef EAGINE_MESSAGE_BUS_CONN_SETUP_HPP
10 #define EAGINE_MESSAGE_BUS_CONN_SETUP_HPP
12 #include "../enum_map.hpp"
13 #include "../main_ctx_object.hpp"
20 class application_config;
23 class connection_setup;
24 void connection_setup_default_init(connection_setup&);
26 static inline auto adapt_log_entry_arg(
28 const std::unique_ptr<connection_factory>& value) {
29 return [name, &value](logger_backend& backend) {
31 backend.add_identifier(
34 backend.add_nothing(name,
EAGINE_ID(ConnFactry));
156 void add_factory(std::unique_ptr<connection_factory> factory);
158 template <
typename Factory,
typename... Args>
159 auto make_factory(Args&&... args)
160 -> std::enable_if_t<std::is_base_of_v<connection_factory, Factory>> {
162 std::make_unique<Factory>(*
this, std::forward<Args>(args)...));
167 connection_setup_default_init(*
this);
173 using _factory_list = std::vector<std::unique_ptr<connection_factory>>;
175 template <connection_kind Kind>
176 using _enum_map_unit = _factory_list;
186 void _do_setup_acceptors(
187 acceptor_user& target,
189 _factory_list& factories);
191 void _do_setup_connectors(
192 connection_user& target,
194 _factory_list& factories);
203 #if !EAGINE_LINK_LIBRARY || defined(EAGINE_IMPLEMENTING_LIBRARY)
204 #include <eagine/message_bus/conn_setup.inl>
207 #endif // EAGINE_MESSAGE_BUS_CONN_SETUP_HPP
Helper class used to initialize main context objects.
Definition: main_ctx_object.hpp:45
void setup_connectors(connection_user &target, string_view address)
Sets up connectors connecting to the specified address.
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116
#define EAGINE_ID(NAME)
Macro for constructing instances of eagine::identifier.
Definition: identifier.hpp:353
void setup_connectors(connection_user &target, connection_kinds kinds, identifier address)
Sets up connectors connecting to the specified address.
Definition: conn_setup.hpp:124
Base class for main context objects.
Definition: main_ctx_object.hpp:71
void setup_acceptors(acceptor_user &target, string_view address)
Sets up acceptors listening on the specified address.
Common code is placed in this namespace.
Definition: eagine.hpp:21
void setup_connectors(connection_user &target, connection_kind kind, identifier address)
Sets up connectors connecting to the specified address.
Definition: conn_setup.hpp:143
@ local_interprocess
Inter-process connection for local communication.
Class for manipulating and testing a group of enumeration-based bits.
Definition: bitfield.hpp:19
void setup_acceptors(acceptor_user &target, connection_kind kind)
Sets up acceptors listening on the default address.
Definition: conn_setup.hpp:100
@ in_process
In-process connection (cannot be used for inter-process communication).
@ remote_interprocess
Inter-process connection for remote communucation.
void setup_connectors(connection_user &target, identifier address)
Sets up connectors connecting to the specified address.
Definition: conn_setup.hpp:108
connection_setup(main_ctx_parent parent) noexcept
Construction from a parent main context object.
Definition: conn_setup.hpp:48
void setup_acceptors(acceptor_user &target)
Sets up acceptors listening on the default address.
Definition: conn_setup.hpp:62
Interface for classes that can use message bus connections.
Definition: connection.hpp:155
Interface for classes that can use message bus connection acceptors.
Definition: acceptor.hpp:38
Class mapping from an enumerator of an instantiation of a template.
Definition: enum_map.hpp:74
basic_address< false > address
Type alias for non-const memory address values.
Definition: address.hpp:203
virtual auto type_id() -> identifier=0
Returns a description identifier of the implementation.
void add_factory(std::unique_ptr< connection_factory > factory)
Adds a new connection factory.
@ kind
The node kind has appeared or changed.
void setup_connectors(connection_user &target)
Sets up connectors connecting to the default address.
Definition: conn_setup.hpp:113
void setup_connectors(connection_user &target, connection_kinds kinds)
Sets up connectors connecting to the default address.
Definition: conn_setup.hpp:132
connection_kind
Message bus connection kind bits enumeration.
Definition: connection_kind.hpp:21
void default_init()
Uses the configuration to do initialization of this setup.
Definition: conn_setup.hpp:166
void setup_acceptors(acceptor_user &target, connection_kind kind, identifier address)
Sets up acceptors listening on the specified address.
Definition: conn_setup.hpp:92
void setup_acceptors(acceptor_user &target, connection_kinds kinds)
Sets up acceptors listening on the default address.
Definition: conn_setup.hpp:81
void setup_acceptors(acceptor_user &target, connection_kinds kinds, identifier address)
Sets up acceptors listening on the specified address.
Definition: conn_setup.hpp:73
Class setting up connections based from configuration.
Definition: conn_setup.hpp:45
void setup_acceptors(acceptor_user &target, identifier address)
Sets up acceptors listening on the specified address.
Definition: conn_setup.hpp:57
void setup_connectors(connection_user &target, connection_kind kind)
Sets up connectors connecting to the default address.
Definition: conn_setup.hpp:151
basic_identifier< 10, 6, default_identifier_char_set, identifier_t > identifier
Default identifier type used throughout the project.
Definition: identifier.hpp:346