Classes | |
struct | eagine::msgbus::acceptor |
Interface for message bus connection acceptors. More... | |
struct | eagine::msgbus::acceptor_user |
Interface for classes that can use message bus connection acceptors. More... | |
class | eagine::msgbus::actor< N, Subscriber > |
Base class for message bus actors with fixed number of message handlers. More... | |
struct | eagine::msgbus::connection_factory |
Interface for message bus connection and acceptor factories. More... | |
class | eagine::msgbus::connection_setup |
Class setting up connections based from configuration. More... | |
struct | eagine::msgbus::connection_info |
Basic interface for retrieving message bus connection information. More... | |
struct | eagine::msgbus::connection |
Interface for message bus connections. More... | |
struct | eagine::msgbus::connection_user |
Interface for classes that can use message bus connections. More... | |
class | eagine::msgbus::context |
Class holding common message bus utility objects. More... | |
class | eagine::msgbus::direct_connection_state |
Common shared state for a direct connection. More... | |
class | eagine::msgbus::direct_connection_address |
Class acting as the "address" of a direct connection. More... | |
class | eagine::msgbus::direct_connection_info< Base > |
Implementation of the connection_info interface for direct connections. More... | |
class | eagine::msgbus::direct_client_connection |
Implementation of client-side direct connection. More... | |
class | eagine::msgbus::direct_server_connection |
Implementation of server-side direct connection. More... | |
class | eagine::msgbus::direct_acceptor |
Implementation of acceptor for direct connections. More... | |
class | eagine::msgbus::direct_connection_factory |
Implementation of connection_factory for direct connections. More... | |
class | eagine::msgbus::endpoint |
Message bus client endpoint that can send and receive messages. More... | |
class | eagine::msgbus::friend_of_endpoint |
Base for classes that need access to enpoint internal functionality. More... | |
class | eagine::msgbus::promise< T > |
Message bus promise class. More... | |
class | eagine::msgbus::future< T > |
Message bus future class. More... | |
class | eagine::msgbus::pending_promises< T > |
Class that makes new and tracks existing pending message bus promises. More... | |
struct | eagine::msgbus::message_handler_map< MemFuncConst > |
Represents a mapping from a message type id to member function constant. More... | |
struct | eagine::msgbus::static_message_handler_map< MessageId, MemFuncConst > |
Represents a mapping from a message type id to member function constant. More... | |
class | eagine::msgbus::loopback_connection |
Loopback implementation of connection. Used mainly for testing and development. More... | |
struct | eagine::msgbus::message_info |
Structure storing information about a sigle message bus message. More... | |
struct | eagine::msgbus::message_view |
Combines message information and a non-owning view to message content. More... | |
class | eagine::msgbus::stored_message |
Combines message information and an owned message content buffer. More... | |
class | eagine::msgbus::message_storage |
Class storing message bus messages. More... | |
class | eagine::msgbus::posix_mqueue |
Class wrapping a POSIX message queue. More... | |
class | eagine::msgbus::posix_mqueue_connection_info< Base > |
Implementation of the connection_info interface for POSIX queue connection. More... | |
class | eagine::msgbus::posix_mqueue_connection |
Implementation of connection on top of POSIX message queues. More... | |
class | eagine::msgbus::posix_mqueue_connector |
Implementation of connection on top of POSIX message queues. More... | |
class | eagine::msgbus::posix_mqueue_acceptor |
Implementation of acceptor on top of POSIX message queues. More... | |
class | eagine::msgbus::posix_mqueue_connection_factory |
Implementation of connection_factory for POSIX message queue connections. More... | |
class | eagine::msgbus::registry |
Class combining a local bus router and a set of endpoints. More... | |
struct | eagine::msgbus::remote_node_changes |
Class providin and manipulating information about remote node changes. More... | |
class | eagine::msgbus::remote_node_tracker |
Class tracking the state of remote message bus nodes. More... | |
class | eagine::msgbus::remote_host |
Class providing information about a remote host of bus nodes. More... | |
class | eagine::msgbus::remote_host_state |
Class manipulating information about a remote host of bus nodes. More... | |
class | eagine::msgbus::remote_instance |
Class providing information about a remote instance running bus nodes. More... | |
class | eagine::msgbus::remote_instance_state |
Class manipulating information about a remote instance running bus nodes. More... | |
class | eagine::msgbus::remote_node |
Class providing information about a remote bus node. More... | |
class | eagine::msgbus::remote_node_state |
Class manipulating information about a remote bus node. More... | |
class | eagine::msgbus::node_connection |
Class providing information about connection between bus nodes. More... | |
class | eagine::msgbus::node_connection_state |
Class manipulating information about connection between bus nodes. More... | |
class | eagine::msgbus::node_connections |
Class providing information about connections from the perspective of a node. More... | |
class | eagine::msgbus::router_address |
Class loading and managing message bus router address(es). More... | |
class | eagine::msgbus::service_composition< Base > |
Helper mixin class for message bus services composed of several parts. More... | |
struct | eagine::msgbus::service_interface |
Interface for message bus services. More... | |
class | eagine::msgbus::subscriber_base |
Base class for message bus subscribers. More... | |
class | eagine::msgbus::static_subscriber< N > |
Template for subscribers with predefined count of handled message types. More... | |
class | eagine::msgbus::subscriber |
Template for subscribers with variable count of handled message types. More... | |
struct | eagine::msgbus::router_topology_info |
Structure holding part of router connection topology information. More... | |
struct | eagine::msgbus::bridge_topology_info |
Structure holding part of bridge connection topology information. More... | |
struct | eagine::msgbus::endpoint_topology_info |
Structure holding part of endpoint connection topology information. More... | |
Macros | |
#define | EAGINE_MSG_MAP(CLASS_ID, METHOD_ID, CLASS, METHOD) |
Constructs an instance of static message handler map. More... | |
Typedefs | |
template<connection_addr_kind Kind> | |
using | eagine::msgbus::connection_addr_kind_tag = std::integral_constant< connection_addr_kind, Kind > |
Tag template alias for specifying connection address kind. | |
template<connection_protocol Proto> | |
using | eagine::msgbus::connection_protocol_tag = std::integral_constant< connection_protocol, Proto > |
Tag template alias for specifying connection protocol kind. More... | |
using | eagine::msgbus::stream_protocol_tag = connection_protocol_tag< connection_protocol::stream > |
Tag type for specifying stream connection protocols. More... | |
using | eagine::msgbus::datagram_protocol_tag = connection_protocol_tag< connection_protocol::datagram > |
Tag type for specifying datagram connection protocols. More... | |
using | eagine::msgbus::connection_kinds = bitfield< connection_kind > |
Alias for connection kind bitfield. | |
using | eagine::msgbus::message_timestamp = std::chrono::steady_clock::time_point |
Alias for message timestamp type. More... | |
using | eagine::msgbus::message_age = std::chrono::duration< float > |
Alias for message age type. More... | |
using | eagine::msgbus::message_crypto_flags = bitfield< message_crypto_flag > |
Alias for message crypto flags bitfield. | |
using | eagine::msgbus::ipv4_port = unsigned short int |
Alias for IPv4 port number value type. | |
using | eagine::msgbus::default_serializer_backend = string_serializer_backend |
Alias for default serialization backend for bus messages. More... | |
using | eagine::msgbus::default_deserializer_backend = string_deserializer_backend |
Alias for default deserialization backend for bus messages. More... | |
using | eagine::msgbus::message_sequence_t = std::uint32_t |
Alias for message sequence number type. | |
using | eagine::msgbus::verification_bits = bitfield< verification_bit > |
Alias for a bus message verification bitfield. | |
Functions | |
static constexpr auto | eagine::msgbus::is_special_message (message_id msg_id) noexcept |
Indicates if the specified message id denotes a special message bus message. | |
static constexpr auto | eagine::msgbus::broadcast_endpoint_id () noexcept -> identifier_t |
Returns the special broadcase message bus endpoint id. | |
static auto | eagine::msgbus::parse_ipv4_addr (string_view addr_str) -> std::tuple< std::string, ipv4_port > |
Parses a IPv4 hostname:port pair,. | |
template<typename T > | |
auto | eagine::msgbus::default_serialize_buffer_for (const T &inst) |
Returns a suitable buffer for the serialization of the specified object. | |
template<typename Backend > | |
auto | eagine::msgbus::serialize_message_header (message_id msg_id, const message_view &msg, Backend &backend) -> std::enable_if_t< std::is_base_of_v< serializer_backend, Backend >, serialization_errors > |
Serializes a bus message header with the specified serializer backend. More... | |
template<typename Backend > | |
auto | eagine::msgbus::serialize_message (message_id msg_id, const message_view &msg, Backend &backend) -> std::enable_if_t< std::is_base_of_v< serializer_backend, Backend >, serialization_errors > |
Serializes a bus message with the specified serializer backend. More... | |
template<typename Backend > | |
auto | eagine::msgbus::deserialize_message_header (identifier &class_id, identifier &method_id, stored_message &msg, Backend &backend) -> std::enable_if_t< std::is_base_of_v< deserializer_backend, Backend >, deserialization_errors > |
Deserializes a bus message header with the specified deserializer backend. More... | |
template<typename Backend > | |
auto | eagine::msgbus::deserialize_message (identifier &class_id, identifier &method_id, stored_message &msg, Backend &backend) -> std::enable_if_t< std::is_base_of_v< deserializer_backend, Backend >, deserialization_errors > |
Deserializes a bus message with the specified deserializer backend. More... | |
template<typename Backend > | |
auto | eagine::msgbus::deserialize_message (message_id &msg_id, stored_message &msg, Backend &backend) -> std::enable_if_t< std::is_base_of_v< deserializer_backend, Backend >, deserialization_errors > |
Deserializes a bus message with the specified deserializer backend. More... | |
auto | eagine::msgbus::default_serialize_message_type (message_id msg_id, memory::block blk) |
Default-serializes the specified message id into a memory block. More... | |
auto | eagine::msgbus::default_deserialize_message_type (message_id &msg_id, memory::const_block blk) |
Default-deserializes the specified message id from a memory block. More... | |
Variables | |
constexpr const span_size_t | eagine::msgbus::min_connection_data_size |
The minimum guaranteed block size that can be sent through bus connections. | |
#define EAGINE_MSG_MAP | ( | CLASS_ID, | |
METHOD_ID, | |||
CLASS, | |||
METHOD | |||
) |
Constructs an instance of static message handler map.
using eagine::msgbus::connection_protocol_tag = typedef std::integral_constant<connection_protocol, Proto> |
Tag template alias for specifying connection protocol kind.
using eagine::msgbus::datagram_protocol_tag = typedef connection_protocol_tag<connection_protocol::datagram> |
Tag type for specifying datagram connection protocols.
Alias for default deserialization backend for bus messages.
using eagine::msgbus::default_serializer_backend = typedef string_serializer_backend |
Alias for default serialization backend for bus messages.
using eagine::msgbus::message_age = typedef std::chrono::duration<float> |
Alias for message age type.
using eagine::msgbus::message_timestamp = typedef std::chrono::steady_clock::time_point |
Alias for message timestamp type.
using eagine::msgbus::stream_protocol_tag = typedef connection_protocol_tag<connection_protocol::stream> |
Tag type for specifying stream connection protocols.
|
strong |
Message bus connection address kind enumeration.
Enumerator | |
---|---|
none | No public address. |
filepath | Filesystem path. |
ipv4 | PIv4 address. |
|
strong |
Message bus connection kind bits enumeration.
|
strong |
Message bus connection protocol.
Enumerator | |
---|---|
stream | Reliable stream protocol. |
datagram | Datagram protocol. |
message | Message protocol. |
|
strong |
Message cryptography-related flag bits enumeration.
Enumerator | |
---|---|
asymmetric | Assymetric cipher is used (symmetric otherwise). |
signed_header | The message header is signed. |
signed_content | The message content is signed. |
|
strong |
|
strong |
|
strong |
Enumeration of changes tracked about remote message bus nodes.
Enumerator | |
---|---|
kind | The node kind has appeared or changed.
|
host_id | The host identifier has appeared or changed. |
host_info | The host information has appeared or changed. |
build_info | The build information has appeared or changed. |
endpoint_info | The endpoint information has appeared or changed. |
methods_added | New remotly callable methods have been added. |
methods_removed | New remotly callable methods have been removed. |
started_responding | Node started responding to pings. |
stopped_responding | Node stopped responding to pings. |
hardware_config | The hardware configuration information has appeared or changed. |
sensor_values | New sensor values have appeared or changed. |
connection_info | The bus connection information has appeared or changed. |
instance_id | The endpoint instance id has changed. |
|
strong |
Bus message verification bits enumeration,.
|
inline |
Default-deserializes the specified message id from a memory block.
|
inline |
Default-serializes the specified message id into a memory block.
auto eagine::msgbus::deserialize_message | ( | identifier & | class_id, |
identifier & | method_id, | ||
stored_message & | msg, | ||
Backend & | backend | ||
) | -> std::enable_if_t< std::is_base_of_v<deserializer_backend, Backend>, deserialization_errors> |
Deserializes a bus message with the specified deserializer backend.
Referenced by eagine::msgbus::deserialize_message().
auto eagine::msgbus::deserialize_message | ( | message_id & | msg_id, |
stored_message & | msg, | ||
Backend & | backend | ||
) | -> std::enable_if_t< std::is_base_of_v<deserializer_backend, Backend>, deserialization_errors> |
Deserializes a bus message with the specified deserializer backend.
auto eagine::msgbus::deserialize_message_header | ( | identifier & | class_id, |
identifier & | method_id, | ||
stored_message & | msg, | ||
Backend & | backend | ||
) | -> std::enable_if_t< std::is_base_of_v<deserializer_backend, Backend>, deserialization_errors> |
Deserializes a bus message header with the specified deserializer backend.
Referenced by eagine::msgbus::deserialize_message().
auto eagine::msgbus::serialize_message | ( | message_id | msg_id, |
const message_view & | msg, | ||
Backend & | backend | ||
) | -> std::enable_if_t< std::is_base_of_v<serializer_backend, Backend>, serialization_errors> |
Serializes a bus message with the specified serializer backend.
Referenced by eagine::msgbus::posix_mqueue_connection::send().
auto eagine::msgbus::serialize_message_header | ( | message_id | msg_id, |
const message_view & | msg, | ||
Backend & | backend | ||
) | -> std::enable_if_t< std::is_base_of_v<serializer_backend, Backend>, serialization_errors> |
Serializes a bus message header with the specified serializer backend.
Referenced by eagine::msgbus::serialize_message().