From f383184b0e6b3e7b3737fa37da1a16cf4e15b982 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 10:42:10 +0100 Subject: [PATCH 1/6] Rename step 1 --- docs/{messaging => messaging_temp}/_index.md | 0 .../images/message-framework.png | Bin .../{messaging => messaging_temp}/message-broker.md | 0 docs/{messaging => messaging_temp}/message-bus.md | 0 .../{messaging => messaging_temp}/message-packet.md | 0 .../message-router-registry.md | 0 .../{messaging => messaging_temp}/message-router.md | 0 docs/{messaging => messaging_temp}/message.md | 0 .../reference-counted-message-pool.md | 0 .../reference-counted-messages.md | 0 .../{messaging => messaging_temp}/shared-message.md | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename docs/{messaging => messaging_temp}/_index.md (100%) rename docs/{messaging => messaging_temp}/images/message-framework.png (100%) rename docs/{messaging => messaging_temp}/message-broker.md (100%) rename docs/{messaging => messaging_temp}/message-bus.md (100%) rename docs/{messaging => messaging_temp}/message-packet.md (100%) rename docs/{messaging => messaging_temp}/message-router-registry.md (100%) rename docs/{messaging => messaging_temp}/message-router.md (100%) rename docs/{messaging => messaging_temp}/message.md (100%) rename docs/{messaging => messaging_temp}/reference-counted-message-pool.md (100%) rename docs/{messaging => messaging_temp}/reference-counted-messages.md (100%) rename docs/{messaging => messaging_temp}/shared-message.md (100%) diff --git a/docs/messaging/_index.md b/docs/messaging_temp/_index.md similarity index 100% rename from docs/messaging/_index.md rename to docs/messaging_temp/_index.md diff --git a/docs/messaging/images/message-framework.png b/docs/messaging_temp/images/message-framework.png similarity index 100% rename from docs/messaging/images/message-framework.png rename to docs/messaging_temp/images/message-framework.png diff --git a/docs/messaging/message-broker.md b/docs/messaging_temp/message-broker.md similarity index 100% rename from docs/messaging/message-broker.md rename to docs/messaging_temp/message-broker.md diff --git a/docs/messaging/message-bus.md b/docs/messaging_temp/message-bus.md similarity index 100% rename from docs/messaging/message-bus.md rename to docs/messaging_temp/message-bus.md diff --git a/docs/messaging/message-packet.md b/docs/messaging_temp/message-packet.md similarity index 100% rename from docs/messaging/message-packet.md rename to docs/messaging_temp/message-packet.md diff --git a/docs/messaging/message-router-registry.md b/docs/messaging_temp/message-router-registry.md similarity index 100% rename from docs/messaging/message-router-registry.md rename to docs/messaging_temp/message-router-registry.md diff --git a/docs/messaging/message-router.md b/docs/messaging_temp/message-router.md similarity index 100% rename from docs/messaging/message-router.md rename to docs/messaging_temp/message-router.md diff --git a/docs/messaging/message.md b/docs/messaging_temp/message.md similarity index 100% rename from docs/messaging/message.md rename to docs/messaging_temp/message.md diff --git a/docs/messaging/reference-counted-message-pool.md b/docs/messaging_temp/reference-counted-message-pool.md similarity index 100% rename from docs/messaging/reference-counted-message-pool.md rename to docs/messaging_temp/reference-counted-message-pool.md diff --git a/docs/messaging/reference-counted-messages.md b/docs/messaging_temp/reference-counted-messages.md similarity index 100% rename from docs/messaging/reference-counted-messages.md rename to docs/messaging_temp/reference-counted-messages.md diff --git a/docs/messaging/shared-message.md b/docs/messaging_temp/shared-message.md similarity index 100% rename from docs/messaging/shared-message.md rename to docs/messaging_temp/shared-message.md From 12792e418f7f6e08f8bb4d9dd24eafe6c5730c21 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 10:42:41 +0100 Subject: [PATCH 2/6] Fix: rename docs/Messaging to docs/messaging --- docs/{messaging_temp => messaging}/_index.md | 0 .../images/message-framework.png | Bin .../{messaging_temp => messaging}/message-broker.md | 0 docs/{messaging_temp => messaging}/message-bus.md | 0 .../{messaging_temp => messaging}/message-packet.md | 0 .../message-router-registry.md | 0 .../{messaging_temp => messaging}/message-router.md | 0 docs/{messaging_temp => messaging}/message.md | 0 .../reference-counted-message-pool.md | 0 .../reference-counted-messages.md | 0 .../{messaging_temp => messaging}/shared-message.md | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename docs/{messaging_temp => messaging}/_index.md (100%) rename docs/{messaging_temp => messaging}/images/message-framework.png (100%) rename docs/{messaging_temp => messaging}/message-broker.md (100%) rename docs/{messaging_temp => messaging}/message-bus.md (100%) rename docs/{messaging_temp => messaging}/message-packet.md (100%) rename docs/{messaging_temp => messaging}/message-router-registry.md (100%) rename docs/{messaging_temp => messaging}/message-router.md (100%) rename docs/{messaging_temp => messaging}/message.md (100%) rename docs/{messaging_temp => messaging}/reference-counted-message-pool.md (100%) rename docs/{messaging_temp => messaging}/reference-counted-messages.md (100%) rename docs/{messaging_temp => messaging}/shared-message.md (100%) diff --git a/docs/messaging_temp/_index.md b/docs/messaging/_index.md similarity index 100% rename from docs/messaging_temp/_index.md rename to docs/messaging/_index.md diff --git a/docs/messaging_temp/images/message-framework.png b/docs/messaging/images/message-framework.png similarity index 100% rename from docs/messaging_temp/images/message-framework.png rename to docs/messaging/images/message-framework.png diff --git a/docs/messaging_temp/message-broker.md b/docs/messaging/message-broker.md similarity index 100% rename from docs/messaging_temp/message-broker.md rename to docs/messaging/message-broker.md diff --git a/docs/messaging_temp/message-bus.md b/docs/messaging/message-bus.md similarity index 100% rename from docs/messaging_temp/message-bus.md rename to docs/messaging/message-bus.md diff --git a/docs/messaging_temp/message-packet.md b/docs/messaging/message-packet.md similarity index 100% rename from docs/messaging_temp/message-packet.md rename to docs/messaging/message-packet.md diff --git a/docs/messaging_temp/message-router-registry.md b/docs/messaging/message-router-registry.md similarity index 100% rename from docs/messaging_temp/message-router-registry.md rename to docs/messaging/message-router-registry.md diff --git a/docs/messaging_temp/message-router.md b/docs/messaging/message-router.md similarity index 100% rename from docs/messaging_temp/message-router.md rename to docs/messaging/message-router.md diff --git a/docs/messaging_temp/message.md b/docs/messaging/message.md similarity index 100% rename from docs/messaging_temp/message.md rename to docs/messaging/message.md diff --git a/docs/messaging_temp/reference-counted-message-pool.md b/docs/messaging/reference-counted-message-pool.md similarity index 100% rename from docs/messaging_temp/reference-counted-message-pool.md rename to docs/messaging/reference-counted-message-pool.md diff --git a/docs/messaging_temp/reference-counted-messages.md b/docs/messaging/reference-counted-messages.md similarity index 100% rename from docs/messaging_temp/reference-counted-messages.md rename to docs/messaging/reference-counted-messages.md diff --git a/docs/messaging_temp/shared-message.md b/docs/messaging/shared-message.md similarity index 100% rename from docs/messaging_temp/shared-message.md rename to docs/messaging/shared-message.md From 9907ab3b684a7c617525e1df198c1fae00522e62 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 11:04:58 +0100 Subject: [PATCH 3/6] Rename step 1 --- docs/{messaging => messaging_temp}/_index.md | 0 .../images/message-framework.png | Bin .../{messaging => messaging_temp}/message-broker.md | 0 docs/{messaging => messaging_temp}/message-bus.md | 0 .../{messaging => messaging_temp}/message-packet.md | 0 .../message-router-registry.md | 0 .../{messaging => messaging_temp}/message-router.md | 0 docs/{messaging => messaging_temp}/message.md | 0 .../reference-counted-message-pool.md | 0 .../reference-counted-messages.md | 0 .../{messaging => messaging_temp}/shared-message.md | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename docs/{messaging => messaging_temp}/_index.md (100%) rename docs/{messaging => messaging_temp}/images/message-framework.png (100%) rename docs/{messaging => messaging_temp}/message-broker.md (100%) rename docs/{messaging => messaging_temp}/message-bus.md (100%) rename docs/{messaging => messaging_temp}/message-packet.md (100%) rename docs/{messaging => messaging_temp}/message-router-registry.md (100%) rename docs/{messaging => messaging_temp}/message-router.md (100%) rename docs/{messaging => messaging_temp}/message.md (100%) rename docs/{messaging => messaging_temp}/reference-counted-message-pool.md (100%) rename docs/{messaging => messaging_temp}/reference-counted-messages.md (100%) rename docs/{messaging => messaging_temp}/shared-message.md (100%) diff --git a/docs/messaging/_index.md b/docs/messaging_temp/_index.md similarity index 100% rename from docs/messaging/_index.md rename to docs/messaging_temp/_index.md diff --git a/docs/messaging/images/message-framework.png b/docs/messaging_temp/images/message-framework.png similarity index 100% rename from docs/messaging/images/message-framework.png rename to docs/messaging_temp/images/message-framework.png diff --git a/docs/messaging/message-broker.md b/docs/messaging_temp/message-broker.md similarity index 100% rename from docs/messaging/message-broker.md rename to docs/messaging_temp/message-broker.md diff --git a/docs/messaging/message-bus.md b/docs/messaging_temp/message-bus.md similarity index 100% rename from docs/messaging/message-bus.md rename to docs/messaging_temp/message-bus.md diff --git a/docs/messaging/message-packet.md b/docs/messaging_temp/message-packet.md similarity index 100% rename from docs/messaging/message-packet.md rename to docs/messaging_temp/message-packet.md diff --git a/docs/messaging/message-router-registry.md b/docs/messaging_temp/message-router-registry.md similarity index 100% rename from docs/messaging/message-router-registry.md rename to docs/messaging_temp/message-router-registry.md diff --git a/docs/messaging/message-router.md b/docs/messaging_temp/message-router.md similarity index 100% rename from docs/messaging/message-router.md rename to docs/messaging_temp/message-router.md diff --git a/docs/messaging/message.md b/docs/messaging_temp/message.md similarity index 100% rename from docs/messaging/message.md rename to docs/messaging_temp/message.md diff --git a/docs/messaging/reference-counted-message-pool.md b/docs/messaging_temp/reference-counted-message-pool.md similarity index 100% rename from docs/messaging/reference-counted-message-pool.md rename to docs/messaging_temp/reference-counted-message-pool.md diff --git a/docs/messaging/reference-counted-messages.md b/docs/messaging_temp/reference-counted-messages.md similarity index 100% rename from docs/messaging/reference-counted-messages.md rename to docs/messaging_temp/reference-counted-messages.md diff --git a/docs/messaging/shared-message.md b/docs/messaging_temp/shared-message.md similarity index 100% rename from docs/messaging/shared-message.md rename to docs/messaging_temp/shared-message.md From b3ade470b0c7d013137ad88400b7ade30d53a176 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 11:05:31 +0100 Subject: [PATCH 4/6] Fix: rename docs/Messaging to docs/messaging --- docs/{messaging_temp => messaging}/_index.md | 0 .../images/message-framework.png | Bin .../{messaging_temp => messaging}/message-broker.md | 0 docs/{messaging_temp => messaging}/message-bus.md | 0 .../{messaging_temp => messaging}/message-packet.md | 0 .../message-router-registry.md | 0 .../{messaging_temp => messaging}/message-router.md | 0 docs/{messaging_temp => messaging}/message.md | 0 .../reference-counted-message-pool.md | 0 .../reference-counted-messages.md | 0 .../{messaging_temp => messaging}/shared-message.md | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename docs/{messaging_temp => messaging}/_index.md (100%) rename docs/{messaging_temp => messaging}/images/message-framework.png (100%) rename docs/{messaging_temp => messaging}/message-broker.md (100%) rename docs/{messaging_temp => messaging}/message-bus.md (100%) rename docs/{messaging_temp => messaging}/message-packet.md (100%) rename docs/{messaging_temp => messaging}/message-router-registry.md (100%) rename docs/{messaging_temp => messaging}/message-router.md (100%) rename docs/{messaging_temp => messaging}/message.md (100%) rename docs/{messaging_temp => messaging}/reference-counted-message-pool.md (100%) rename docs/{messaging_temp => messaging}/reference-counted-messages.md (100%) rename docs/{messaging_temp => messaging}/shared-message.md (100%) diff --git a/docs/messaging_temp/_index.md b/docs/messaging/_index.md similarity index 100% rename from docs/messaging_temp/_index.md rename to docs/messaging/_index.md diff --git a/docs/messaging_temp/images/message-framework.png b/docs/messaging/images/message-framework.png similarity index 100% rename from docs/messaging_temp/images/message-framework.png rename to docs/messaging/images/message-framework.png diff --git a/docs/messaging_temp/message-broker.md b/docs/messaging/message-broker.md similarity index 100% rename from docs/messaging_temp/message-broker.md rename to docs/messaging/message-broker.md diff --git a/docs/messaging_temp/message-bus.md b/docs/messaging/message-bus.md similarity index 100% rename from docs/messaging_temp/message-bus.md rename to docs/messaging/message-bus.md diff --git a/docs/messaging_temp/message-packet.md b/docs/messaging/message-packet.md similarity index 100% rename from docs/messaging_temp/message-packet.md rename to docs/messaging/message-packet.md diff --git a/docs/messaging_temp/message-router-registry.md b/docs/messaging/message-router-registry.md similarity index 100% rename from docs/messaging_temp/message-router-registry.md rename to docs/messaging/message-router-registry.md diff --git a/docs/messaging_temp/message-router.md b/docs/messaging/message-router.md similarity index 100% rename from docs/messaging_temp/message-router.md rename to docs/messaging/message-router.md diff --git a/docs/messaging_temp/message.md b/docs/messaging/message.md similarity index 100% rename from docs/messaging_temp/message.md rename to docs/messaging/message.md diff --git a/docs/messaging_temp/reference-counted-message-pool.md b/docs/messaging/reference-counted-message-pool.md similarity index 100% rename from docs/messaging_temp/reference-counted-message-pool.md rename to docs/messaging/reference-counted-message-pool.md diff --git a/docs/messaging_temp/reference-counted-messages.md b/docs/messaging/reference-counted-messages.md similarity index 100% rename from docs/messaging_temp/reference-counted-messages.md rename to docs/messaging/reference-counted-messages.md diff --git a/docs/messaging_temp/shared-message.md b/docs/messaging/shared-message.md similarity index 100% rename from docs/messaging_temp/shared-message.md rename to docs/messaging/shared-message.md From b969b2c46c28b871db76f2c9ee6c8e27abb83427 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 11:16:02 +0100 Subject: [PATCH 5/6] Rename step 1 --- docs/{Messaging => messaging_temp}/_index.md | 0 .../images/message-framework.png | Bin .../{Messaging => messaging_temp}/message-broker.md | 0 docs/{Messaging => messaging_temp}/message-bus.md | 0 .../{Messaging => messaging_temp}/message-packet.md | 0 .../message-router-registry.md | 0 docs/{Messaging => messaging_temp}/message.md | 0 .../reference-counted-message-pool.md | 0 .../reference-counted-messages.md | 0 .../{Messaging => messaging_temp}/shared-message.md | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename docs/{Messaging => messaging_temp}/_index.md (100%) rename docs/{Messaging => messaging_temp}/images/message-framework.png (100%) rename docs/{Messaging => messaging_temp}/message-broker.md (100%) rename docs/{Messaging => messaging_temp}/message-bus.md (100%) rename docs/{Messaging => messaging_temp}/message-packet.md (100%) rename docs/{Messaging => messaging_temp}/message-router-registry.md (100%) rename docs/{Messaging => messaging_temp}/message.md (100%) rename docs/{Messaging => messaging_temp}/reference-counted-message-pool.md (100%) rename docs/{Messaging => messaging_temp}/reference-counted-messages.md (100%) rename docs/{Messaging => messaging_temp}/shared-message.md (100%) diff --git a/docs/Messaging/_index.md b/docs/messaging_temp/_index.md similarity index 100% rename from docs/Messaging/_index.md rename to docs/messaging_temp/_index.md diff --git a/docs/Messaging/images/message-framework.png b/docs/messaging_temp/images/message-framework.png similarity index 100% rename from docs/Messaging/images/message-framework.png rename to docs/messaging_temp/images/message-framework.png diff --git a/docs/Messaging/message-broker.md b/docs/messaging_temp/message-broker.md similarity index 100% rename from docs/Messaging/message-broker.md rename to docs/messaging_temp/message-broker.md diff --git a/docs/Messaging/message-bus.md b/docs/messaging_temp/message-bus.md similarity index 100% rename from docs/Messaging/message-bus.md rename to docs/messaging_temp/message-bus.md diff --git a/docs/Messaging/message-packet.md b/docs/messaging_temp/message-packet.md similarity index 100% rename from docs/Messaging/message-packet.md rename to docs/messaging_temp/message-packet.md diff --git a/docs/Messaging/message-router-registry.md b/docs/messaging_temp/message-router-registry.md similarity index 100% rename from docs/Messaging/message-router-registry.md rename to docs/messaging_temp/message-router-registry.md diff --git a/docs/Messaging/message.md b/docs/messaging_temp/message.md similarity index 100% rename from docs/Messaging/message.md rename to docs/messaging_temp/message.md diff --git a/docs/Messaging/reference-counted-message-pool.md b/docs/messaging_temp/reference-counted-message-pool.md similarity index 100% rename from docs/Messaging/reference-counted-message-pool.md rename to docs/messaging_temp/reference-counted-message-pool.md diff --git a/docs/Messaging/reference-counted-messages.md b/docs/messaging_temp/reference-counted-messages.md similarity index 100% rename from docs/Messaging/reference-counted-messages.md rename to docs/messaging_temp/reference-counted-messages.md diff --git a/docs/Messaging/shared-message.md b/docs/messaging_temp/shared-message.md similarity index 100% rename from docs/Messaging/shared-message.md rename to docs/messaging_temp/shared-message.md From 9b56ffe676f5e9b3c5056745778049800ac33c8a Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 8 Jun 2026 11:16:22 +0100 Subject: [PATCH 6/6] Fix: rename docs/Messaging to docs/messaging --- docs/messaging_temp/_index.md | 23 -- .../images/message-framework.png | Bin 8529 -> 0 bytes docs/messaging_temp/message-broker.md | 217 ------------------ docs/messaging_temp/message-bus.md | 207 ----------------- docs/messaging_temp/message-packet.md | 155 ------------- .../messaging_temp/message-router-registry.md | 180 --------------- docs/messaging_temp/message.md | 112 --------- .../reference-counted-message-pool.md | 139 ----------- .../reference-counted-messages.md | 197 ---------------- docs/messaging_temp/shared-message.md | 79 ------- 10 files changed, 1309 deletions(-) delete mode 100644 docs/messaging_temp/_index.md delete mode 100644 docs/messaging_temp/images/message-framework.png delete mode 100644 docs/messaging_temp/message-broker.md delete mode 100644 docs/messaging_temp/message-bus.md delete mode 100644 docs/messaging_temp/message-packet.md delete mode 100644 docs/messaging_temp/message-router-registry.md delete mode 100644 docs/messaging_temp/message.md delete mode 100644 docs/messaging_temp/reference-counted-message-pool.md delete mode 100644 docs/messaging_temp/reference-counted-messages.md delete mode 100644 docs/messaging_temp/shared-message.md diff --git a/docs/messaging_temp/_index.md b/docs/messaging_temp/_index.md deleted file mode 100644 index 5344a178..00000000 --- a/docs/messaging_temp/_index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Messaging" -weight: 100 ---- - -## Headers - -- `message.h` - Defines the core message model. etl::imessage is the base interface (virtual or non-virtual, depending on `ETL_HAS_VIRTUAL_MESSAGES`). `etl::message` provides typed messages with static IDs. Type traits (`is_message`, `is_message_type`, etc.) and ID comparison utilities support compile-time validation. -- `message_router.h` - Defines `etl::imessage_router`, the central routing interface with receive, accepts, and router identity. Provides message_router that statically dispatches by message ID (contiguous IDs optimized). Includes null_message_router and message_producer helpers, plus send_message utilities. -- `message_bus.h` -Implements `etl::imessage_bus`, a router that manages a sorted list of subscribed routers and forwards messages based on destination ID (broadcast or addressed). Supports subscription limits and forwards to successors. -- `message_broker.h` - Implements etl::message_broker, a router with explicit subscription objects mapping routers to message ID lists (span). It routes only to subscribers that match both message ID and destination ID, then forwards to any successor. -- `message_packet.h` - A type-erased, in-place container for a fixed set of message types. Validates message ID acceptance, supports copy/move, and exposes `get()` as `etl::imessage&`. Uses aligned storage sized to the largest message type. -- `shared_message.h` - Reference-counted wrapper around pooled messages (`ireference_counted_message_pool`). Supports copy/move semantics with automatic release when the last reference drops. - -## Basic architecture - -![message-framework](images/message-framework.png) diff --git a/docs/messaging_temp/images/message-framework.png b/docs/messaging_temp/images/message-framework.png deleted file mode 100644 index a4b8a42443b4f76ba717ca9a36619dd9adf731d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8529 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 diff --git a/docs/messaging_temp/message-broker.md b/docs/messaging_temp/message-broker.md deleted file mode 100644 index ffc5df6d..00000000 --- a/docs/messaging_temp/message-broker.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: "message_broker" -weight: 6 ---- - -{{< callout type="info">}} - Header: `message_broker.h` -{{< /callout >}} - -Message Broker - -A variant of the observer pattern in that message routers and derived types are be able to subscribe to selected sets of messages. The message_broker is similar to the message_bus, but it provides more control over the routing of messages. While the message_bus simply broadcasts every message to all subscribers, the message_broker allows you to specify which subscribers should receive each message. - -Derived from `imessage_router`. - -## Types - -```cpp -message_id_span_t etl::span -``` - -## subscription -A nested class of `etl::message_broker`. -The base for broker subscription information. -Derive from this to define your subscription class. -See Example. - ---- - -```cpp -subscription(etl::imessage_router& router) -``` -Constructor. - ---- - -```cpp -virtual message_id_span_t message_id_list() const = 0; -``` -Override this to return a span of message ids. - -## message_broker - -```cpp -message_broker() -``` -The broker is constructed with an id of `etl::imessage_router::MESSAGE_BROKER`. - ---- - -```cpp -message_broker(etl::imessage_router& successor) -``` -The broker is constructed with an id of `etl::imessage_router::MESSAGE_BROKER`. -Sets the successor. - ---- - -```cpp -message_broker(etl::message_router_id_t id) -``` -The broker is constructed with the specified id. - ---- - -```cpp -message_broker(etl::message_router_id_t id, etl::imessage_router& successor) -``` -The broker is constructed with the specified id. -Sets the successor. - ---- - -```cpp -void subscribe(etl::imessage_router& router) -``` -Subscribes an `etl::imessage_router` derived class to the broker. -A subscription object must have a lifetime of at least the same as the broker. -A subscription cannot be shared with another broker. - ---- - -```cpp -void unsubscribe(etl::imessage_router& router) -``` -Unsubscribes the specified `etl::imessage_router` derived class from the bus. -Does not unsubscribe from nested buses. - ---- - -```cpp -void receive(const etl::imessage& message) -void receive(etl::shared_message message) -``` -Receives a message and distributes it to all subscribers that have registered to receive the message type. -Forwards the message to any successor. - -Override this in a derived class if you wish to capture messages sent to the broker. -Call the base receive function from here to allow normal operation to continue. - ---- - -```cpp -bool accepts(etl::message_id_t id) const -``` -Always returns `true`. - ---- - -```cpp -void clear() -``` -Clears the broker of all subscribers. - ---- - -```cpp -ETL_DEPRECATED bool is_null_router() const ETL_OVERRIDE -``` -Always returns `false`. - ---- - -```cpp -bool is_producer() const ETL_OVERRIDE -``` -Always returns `true`. - ---- - -```cpp -bool is_consumer() const ETL_OVERRIDE -``` -Always returns `true`. - ---- - -```cpp -bool empty() const -``` -Returns `true` is the are are no subscribers. - -## Example -```cpp -// Some router ids. -enum -{ - ROUTER_ID_1, - ROUTER_ID_2, -}; - -// Custom subscription type. -class Subscription : public etl::message_broker::subscription -{ -public: - - Subscription(etl::imessage_router& router, std::initializer_list id_list_) - : etl::message_broker::subscription(router) - , id_list(id_list_) - { - } - - etl::message_broker::message_id_span_t message_id_list() const override - { - return etl::message_broker::message_id_span_t(id_list.begin(), id_list.end()); - } - - std::vector id_list; -}; - -// Instances of messages. -Message1 message1; -Message2 message2; -Message3 message3; -Message4 message4; - -// Custom broker. -class Broker : public etl::message_broker -{ -public: - - using etl::message_broker::receive; - - // Hook incoming messages and translate Message4 to Message3. - void receive(const etl::imessage& msg) override - { - if (msg.get_message_id() == Message4::ID) - { - etl::message_broker::receive(Message3()); - } - else - { - etl::message_broker::receive(msg); - } - } -}; - -// Instances of message routers. -Router1 router1; -Router2 router2; - -// The subscriptions. -Subscription subscription1{ router1, { Message1::ID, Message2::ID } }; -Subscription subscription2{ router2, { Message2::ID, Message3::ID } }; - -// Instance of message broker. -etl::message_broker broker; - -// Subscribe router1 and router1 to the broker. -broker.subscribe(subscription1); -broker.subscribe(subscription2); - -broker.receive(message1); // Received by router1 -broker.receive(message2); // Received by router1 and router2 -broker.receive(message3); // Received by router2 -broker.receive(message4); // Received by router2 as a Message3 -``` diff --git a/docs/messaging_temp/message-bus.md b/docs/messaging_temp/message-bus.md deleted file mode 100644 index 921e5b86..00000000 --- a/docs/messaging_temp/message-bus.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: "message_bus" -weight: 5 ---- - -{{< callout type="info">}} - Header: `message_broker.h` - From: `20.33.0` -{{< /callout >}} - -Message Bus - -This page documents version `20.0.0` and above. - -A variant of the observer pattern in that message routers and derived types are be able to subscribe to messages on a bus. The messages can be either broadcast, to be automatically picked up by any router that has a handler, or addressed to a particular router or router id. Message buses may be nested by setting a successor. - -## imessage_bus -Derived from imessage_router. - -The base for all message buses. -Inherits publicly from `etl::imessage_router`. -Message buses are therefore also a type of router. -Objects of type `etl::imessage_bus` cannot be directly constructed. - -## Member functions - -```cpp -bool subscribe(etl::imessage_router& router) -``` -Subscribes an `etl::imessage_router` derived class to the bus. -Returns `true` on success. - ---- - -```cpp -void unsubscribe(etl::imessage_router& router) -``` -Unsubscribes the specified `etl::imessage_router` derived class from the bus. -Does not unsubscribe from nested buses. - ---- - -```cpp -void unsubscribe(etl::message_router_id_t id) -``` -Unsubscribes routers with the specified id from the bus. -Does not unsubscribe from nested buses. - -`etl::imessage::MESSAGE_BUS` will unsubscribe all message buses. -`etl::imessage::ALL_MESSAGE_ROUTERS` will unsubscribe all routers and buses. Equivalent to calling `clear()`. - ---- - -```cpp -void receive(const etl::imessage& message) -void receive(etl::shared_message message) -``` -Receives a message and distributes it to all subscribers. -Forwards the message to any successor. - -The routers are called first, in order of ascending router id. -Routers with the duplicate ids will be called in subscribe order. -Any nested message buses are called in subscribe order. - ---- - -```cpp -void receive(etl::message_router_id_t destination_router_id, - const etl::imessage& message); -void receive(etl::message_router_id_t destination_router_id, - etl::shared_message message) -``` -Receives a message and distributes it to all subscribers that have the specified router id. -Forwards the message to any successor. - -Routers with the duplicate ids will be called in subscribe order. -Any nested message buses are called in subscribe order. - -Override this in a derived class if you wish to capture messages sent to the bus. -Call the base receive function from here to allow normal operation to continue. - ---- - -```cpp -bool accepts(etl::message_id_t id) const -``` -Always returns `true`. - ---- - -```cpp -size_t size() const -``` -Returns the number of subscribers. - ---- - -```cpp -void clear() -``` -Clears the bus of all subscribers. - -Message buses inherit all of the public functions of `etl::imessage_router`. - -## Errors - -```cpp -message_bus_exception -``` -Base error class for `etl::message_bus`. Inherits from `etl::exception`. - ---- - -```cpp -message_bus_too_many_subscribers -``` -Emitted when the number of subscribers exceeds the capacity. Inherits from `etl::message_bus_exception`. - -## message_bus -Derived from `imessage_bus`. - -```cpp -template -class message_bus -``` -`MAX_ROUTERS` The maximum number of routers that can be subscribed. - -## Member functions - -```cpp -message_bus() -``` -Constructs a message bus. -Message buses always have a router id of `etl::imessage::MESSAGE_BUS`. - -```cpp -message_bus(etl::imessage_router& successor) -``` -Constructs a message bus and sets the successor. -Message buses always have a router id of `etl::imessage::MESSAGE_BUS`. - -## Example -```cpp -// Some router ids. -enum -{ - ROUTER_ID_1, - ROUTER_ID_2, - ROUTER_ID_3 -}; - -// Instances of messages. -MessageA messageA; - -// Instances of message routers. -RouterA routerA(ROUTER_ID_1); -RouterB routerB(ROUTER_ID_1); -RouterC routerC(ROUTER_ID_2); -RouterD routerD(ROUTER_ID_3); -RouterE routerE(ROUTER_ID_1); - -// Instances of message buses. -etl::message_bus<4> bus1; -etl::message_bus<2> bus2; -etl::message_bus<1> bus3; - -// Subscribe bus2 & bus3 to bus1. -bus1.subscribe(bus3); -bus1.subscribe(bus2); - -// Subscribe routerB & routerA to bus1. -bus1.subscribe(routerB); -bus1.subscribe(routerA); - -// Subscribe routerD & routerC to bus2. -bus2.subscribe(routerD); -bus2.subscribe(routerC); - -// Subscribe routerE to bus3. -bus3.subscibe(routerE); - -// Assume all routers accept the same messages. - -// Broadcast messageA to everyone. -bus1.receive(messageA); - -// The call order will be... -// routerB -// routerA -// routerE -// routerC -// routerD - -// Address messageA to routers with id ROUTER_ID_1. -bus1.receive(ROUTER_ID_1, messageA); - -// The call order will be... -// routerB -// routerA -// routerE - -// Address messageA to routers with id ROUTER_ID_3. -bus1.receive(ROUTER_ID_3, messageA); - -// The call order will be... -// routerD -``` diff --git a/docs/messaging_temp/message-packet.md b/docs/messaging_temp/message-packet.md deleted file mode 100644 index d027aaed..00000000 --- a/docs/messaging_temp/message-packet.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: "message_packet" ---- - -{{< callout type="info">}} - Header: `message_packet.h` -{{< /callout >}} - -A container for more than one type of message. -The messages must have been derived from `etl::imessage`. - -The messages types that the packet may contain are listed as template parameters. -e.g. `etl::message_packet` - -From `20.40.0` message types are not required to have a virtual destructor. - ---- - -```cpp -message_packet() -``` -Default constructs a message packet. -`is_valid()` returns `false`. - ---- - -```cpp -explicit message_packet(const etl::imessage&) -``` -Constructs a message packet from an `etl::imessage` reference. -Asserts an `etl::unhandled_message_exception` error if the parameter is not one listed in the template parameter list. - ---- - -```cpp -explicit message_packet(etl::imessage&&) C++11 -``` -Move constructs a message packet from an `etl::imessage` rvalue reference. -Emits an `etl::unhandled_message_exception` error if the parameter is not one listed in the template parameter list. - ---- - -```cpp -template -explicit message_packet(const TMessage&) -``` -Constructs a message packet from a `TMessage` reference. -Emits a compile time static assert if the parameter is not one listed in the template parameter list. -From: `20.22.0` - ---- - -```cpp -template -explicit message_packet(TMessage&&) -``` -Move constructs a message packet from a `TMessage` rvalue reference. -Emits a compile time static assert if the parameter is not one listed in the template parameter list. -From: `20.22.0` - ---- - -```cpp -message_packet(const message_packet&) -``` -Constructs a message packet from an `message_packet` reference. -Emits an `etl::unhandled_message_exception` error if the parameter is not one listed in the template parameter list. - ---- - -```cpp -message_packet(message_packet&&) -``` -Move constructs a message packet from an `message_packet` rvalue reference. -Emits an `etl::unhandled_message_exception` if the parameter is not one listed in the template parameter list. - ---- - -```cpp -message_packet& operator =(const message_packet&) -``` -Assigns a message packet from an `message_packet` reference. -Emits an `etl::unhandled_message_exception` error if the parameter is not one listed in the template parameter list. - ---- - -```cpp -message_packet& operator =(message_packet&&) -``` -Move assigns a message packet from an `message_packet` rvalue reference. -Emits an `etl::unhandled_message_exception` error if the parameter is not one listed in the template parameter list. - ---- - -```cpp -etl::imessage& get() -const etl::imessage& get() const -``` -Returns a reference to an `etl::imessage`. - ---- - -```cpp -bool is_valid() const -``` -Returns `true` if the packet contains a valid message, otherwise `false`. - ---- - -## Constants - -`SIZE` The size of the largest message. -`ALIGNMENT` The largest message alignment. - ---- - -## Example -```cpp -enum -{ - MESSAGE1, - MESSAGE2, - MESSAGE3 -}; - -struct Message1 : public etl::message -{ -}; - -struct Message2 : public etl::message -{ -}; - -struct Message3 : public etl::message -{ -}; - -using Packet = etl::message_packet - -Message1 message1; -Message2 message2; -Message3 message3; - -Packet packet1(message1); -Packet packet2(message2); -Packet packet3(message3); // Runtime time error! Packet does not support Message3 type. - -etl::imessage& m1 = message1; -Packet packet4(m1); // Construct from an etl::imessage reference. - -etl::imessage& m3 = message3; -Packet packet4(m3); // Asserts etl::unhandled_message_exception! Packet does not support Message3 type. - -etl::imessage& m = packet2.get(); // Get a reference to an etl::imessage from the packet. -``` diff --git a/docs/messaging_temp/message-router-registry.md b/docs/messaging_temp/message-router-registry.md deleted file mode 100644 index cfd21d1d..00000000 --- a/docs/messaging_temp/message-router-registry.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: "message_router_registry" -weight: 4 ---- - -{{< callout type="info">}} - Header: `message_router_registry` - From: `20.6.0` -{{< /callout >}} - -A class that will act as a registry for all message router types. -When iterating through the registry, routers with identical IDs are ordered by insertion. - -**Defines the following classes** -```cpp -etl::imessage_router_registry -etl::message_router_registry -``` - -## imessage_router_registry - -The base class for all router registries. - -### Iterators -```cpp -iterator -const_iterator -``` - -### Member functions - -```cpp -iterator begin() -const_iterator begin() const -const_iterator cbegin() const -``` -Get the beginning of the registry. - ---- - -```cpp -iterator end() -const_iterator end() const -const_iterator cend() const -``` -Get the end of the registry. - ---- - -```cpp -iterator lower_bound(etl::message_router_id_t id) -const_iterator lower_bound(etl::message_router_id_t id) const -``` -Get the lower bound in the registry of the router with the specified ID. - ---- - -```cpp -iterator upper_bound(etl::message_router_id_t id) -const_iterator upper_bound(etl::message_router_id_t id) const -``` -Get the upper bound in the registry of the router with the specified ID. - ---- - -```cpp -etl::imessage_router* find(etl::message_router_id_t id) -const etl::imessage_router* find(etl::message_router_id_t id) const -``` -Returns a pointer to the first router with the specified ID, or `ETL_NULLPTR` if it cannot be found. - ---- - -```cpp -void add(etl::imessage_router& router) -void add(etl::imessage_router* p_router) -``` -Registers a router. -If the registry is full then an ETL assert is emitted (`etl::message_router_registry_full`). -Duplicate routers will be ignored. - ---- - -```cpp -template -void add(TIterator first, const TIterator& last) -``` -Registers a collection of routers. -If the registry becomes full then an ETL assert is emitted (`etl::message_router_registry_full`). -Duplicate routers will be ignored. - ---- - -```cpp -void remove(etl::message_router_id_t id) -``` -Unregisters a router. - ---- - -```cpp -bool contains(const etl::message_router_id_t id) const -bool contains(const etl::imessage_router* const p_router) const -bool contains(const etl::imessage_router& router) const -``` -Returns `true` if the registry contains a router that has the specified ID or object. - ---- - -```cpp -bool empty() const -``` -Returns `true` if the registry is empty, otherwise `false`. - ---- - -```cpp -bool full() const -``` -Returns `true` if the registry is full, otherwise `false`. - ---- - -```cpp -size_t size() const -``` -Returns the size of the registry. - ---- - -```cpp -size_t available() const -``` -Returns the available size of the registry. - ---- - -```cpp -size_t max_size() const -``` -Returns the maximum size of the registry. - ---- - -## message_router_registry - -```cpp -message_router_registry() -``` -Default constructor. - ---- - -```cpp -template -message_router_registry(TIterator first, const TIterator& last) -``` -Constructs from an iterator range. - ---- - -```cpp -message_router_registry(std::initializer_list init) -``` -Initializer_list constructor. -Enabled for C++11 or above. - ---- - -```cpp -message_router_registry(const message_router_registry& rhs) -``` -Copy constructor. - ---- - -```cpp -message_router_registry& operator =(const message_router_registry& rhs) -``` -Assignment operator. diff --git a/docs/messaging_temp/message.md b/docs/messaging_temp/message.md deleted file mode 100644 index 5f6efa95..00000000 --- a/docs/messaging_temp/message.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: "message" -weight: 1 ---- - -{{< callout type="info">}} - Header: `message.h` -{{< /callout >}} - -Message types used for many of the framework classes. - ---- - -```cpp -etl::message_id_t -``` -The type used for message ids. -By default can hold a value between 0 and 255. -If `ETL_MESSAGE_ID_TYPE` is defined then this type will be used instead. - ---- - -```cpp -etl::message_router_id_t -``` -The type used for message router ids. -Can hold a value between 0 and 255. - ---- - -The message classes are the common communication method across all of the message capable frameworks. -They are identified by a unique id number that specialises the base class. - -## imessage - -The base class for messages. -It is this class that is passed around, usually by const reference. -The class is abstract. - ---- - -```cpp -etl::message_id_t get_message_id() const ETL_NOEXCEPT = 0; -``` -Returns the id of the message. - ---- - -## message - -```cpp -message -``` -Requires an integral id as the template parameter. -Inherits from `TParent`, which defaults to `etl::imessage`. -`TParent` allows additional base interfaces or functionality to be included. -static asserts if `TParent` is not a base of `etl::imessage`. - ---- - -```cpp -ID -``` -The id of the message as an enum. -Can be accessed by `etl::message` instances. - ---- - -```cpp -TParent -``` -The class that it inherits from. It must ultimately derive from `etl::imessage`. -The default is `etl::imessage`. - ---- - -## Example - -```cpp -enum -{ - START, - STOP, - SET_SPEED -}; - -struct MyInterface : public etl::imessage -{ - virtual void DoStuff() = 0; -}; - -// Start implements MyIterface -struct Start : public etl::message -{ - void DoStuff() override - { - // Do stuff here. - } -}; - -struct Stop : public etl::message -{ - bool isEmergencyStop; -}; - -struct SetSpeed : public etl::message -{ - uint32_t speed; -}; - -void Receive(const etl::imessage& msg); -``` diff --git a/docs/messaging_temp/reference-counted-message-pool.md b/docs/messaging_temp/reference-counted-message-pool.md deleted file mode 100644 index b2701cd0..00000000 --- a/docs/messaging_temp/reference-counted-message-pool.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: "reference_counted_message_pool" ---- - -{{< callout type="info">}} - Header: `reference_counted_message_pool.h` - Header: `ireference_counted_message_pool.h` -{{< /callout >}} - -Allocates `etl::ireference_counted_message` types that are used by `etl::shared_message`. -Uses a supplied `memory_block allocator` derived from `etl::imemory_block_allocator`. - -## ireference_counted_message_pool.h -Defines the following class. -`etl::ireference_counted_message_pool` - -## reference_counted_message_pool.h -Defines the following classes. -`etl::reference_counted_message_pool_exception` -`etl::reference_counted_message_pool_allocation_failure` -`etl::reference_counted_message_pool_release_failure` - - -## ireference_counted_message_pool - -```cpp -etl::ireference_counted_message_pool -``` - -The interface for reference counted message pools. -```cpp -virtual ~ireference_counted_message_pool() {} -``` -```cpp -virtual void release(const etl::ipool_message& msg) = 0; -``` - -Virtual `lock()` and `unlock()` functions are defined. The default action is to do nothing. -A derived class may override these functions to provide a thread or interrupt safe pool. -`virtual void lock()` -`virtual void unlock()` - -## reference_counted_message_pool - -```cpp -etl::reference_counted_message_pool -``` -The concrete reference counted message pool. - -```cpp -reference_counted_message_pool(imemory_block_allocator& memory_block_allocator) -``` -Constructs the pool and assigns the memory block allocator to it. - ---- - -```cpp -template -etl::reference_counted_message* allocate() -``` -Returns a pointer to a pool message that holds a `TMessage`. -The message is default constructed. -ETL_ASSERT if one cannot be allocated and returns `ETL_NULLPTR`. - ---- - -```cpp -template -etl::reference_counted_message* allocate(const TMessage& message) -``` -Returns a pointer to a pool message that holds a `TMessage`. -ETL_ASSERT if one cannot be allocated and returns `ETL_NULLPTR`. - ---- - -```cpp -void release(const etl::ireference_counted_message& rcmessage) -``` -Returns the reference counted to a pool message that holds a `TMessage`. -`ETL_ASSERT` if it cannot be released. Reasons can include the message not belonging to the pool. - -## pool_message_parameters - -**C++03** -The C++03 version defines the largest size and alignment of up to 8 types at a time. - -```cpp -template -struct pool_message_parameters -``` - ---- - -```cpp -static const size_t max_size; -``` -The maximum size. - ---- - -```cpp -static const size_t max_alignment; -``` -The maximum alignment. - -**C++11 or above** -The C++11 version defines the largest size and alignment of a set of message types. - -```cpp -template -struct pool_message_parameters -``` - ---- - -```cpp -static constexpr size_t max_size -``` -The maximum size. - ---- - -```cpp -static constexpr size_t max_alignment; -``` -The maximum alignment. - ---- - -**For C++11, with atomic support.** - -```cpp -template -using atomic_counted_message_pool = etl::reference_counted_message_pool; -``` -Defines an alias to a reference counted message pool that uses an atomic. diff --git a/docs/messaging_temp/reference-counted-messages.md b/docs/messaging_temp/reference-counted-messages.md deleted file mode 100644 index 8e8bd728..00000000 --- a/docs/messaging_temp/reference-counted-messages.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: "reference_counted_message" ---- - -{{< callout type="info">}} - Header: `reference_counted_message.h` -{{< /callout >}} - -Reference counted message types that are used by `etl::shared_message`. - -**Defines the following classes** - -```cpp -etl::ireference_counted_message -``` -The interface of all reference counted message types. - ---- - -```cpp -etl::reference_counted_message -``` -Derived from `etl::ireference_counted_message`. - -```cpp -etl::persistent_message -``` -Derived from `etl::ireference_counted_message`. - -## ireference_counted_message - -```cpp -etl::ireference_counted_message -``` -The interface of all reference counted message types. - ---- - -```cpp -virtual ~ireference_counted_message() -``` - ---- - -```cpp -ETL_NODISCARD virtual etl::imessage& get_message() = 0; -``` -Get a reference to the message. - ---- - -```cpp -ETL_NODISCARD virtual const etl::imessage& get_message() const = 0; -``` -Get a const reference to the message. - ---- - -```cpp -ETL_NODISCARD virtual etl::ireference_counter& get_reference_counter() = 0; -``` -Get a reference to the reference counter. - ---- - -```cpp -ETL_NODISCARD virtual const etl::ireference_counter& get_reference_counter() const = 0; -``` -Get a const reference to the reference counter. - ---- - -```cpp -virtual void release() = 0; -``` -Release back to the owner. - -## reference_counted_message - -```cpp -etl::reference_counted_message -``` -The implementation of reference counted messages owned by a pool. -Will static assert if TMessage is no derived from etl::imessage. - ---- - -```cpp -reference_counted_message(const TMessage& message, etl::ireference_counted_message_pool& owner) -``` -Constructs from a message and the pool from which the reference counted message is allocated. -The message is copied. - ---- - -```cpp -reference_counted_message(etl::ireference_counted_message_pool& owner) -``` -Constructs from a message and the pool from which the reference counted message is allocated. -The message is default constructed. - ---- - -```cpp -ETL_NODISCARD TMessage& get_message() ETL_OVERRIDE -``` -Get a reference to the message. - ---- - -```cpp -ETL_NODISCARD const TMessage& get_message() const ETL_OVERRIDE -``` -Get a const reference to the message. - ---- - -```cpp -ETL_NODISCARD etl::ireference_counter& get_reference_counter() ETL_OVERRIDE -``` -Get a reference to the reference counter. - ---- - -```cpp -ETL_NODISCARD const etl::ireference_counter& get_reference_counter() const ETL_OVERRIDE -``` -Get a const reference to the reference counter. - ---- - -```cpp -void release() ETL_OVERRIDE -``` -Release back to the owner pool. - -## persistent_message - -```cpp -etl::persistent_message -``` - -The implementation of reference counted messages not owned by a pool. -It's counter type is `void`. -Will static assert if `TMessage` is not derived from `etl::imessage`. - ---- - -```cpp -persistent_message(const TMessage& message) -``` -Constructs from a message. -The message is copied. - ---- - -```cpp -ETL_NODISCARD TMessage& get_message() ETL_OVERRIDE -``` -Get a reference to the message. - ---- - -```cpp -ETL_NODISCARD const TMessage& get_message() const ETL_OVERRIDE -``` -Get a const reference to the message. - ---- - -```cpp -ETL_NODISCARD etl::ireference_counter& get_reference_counter() ETL_OVERRIDE -``` -Get a reference to the reference counter. - ---- - -```cpp -ETL_NODISCARD const etl::ireference_counter& get_reference_counter() const ETL_OVERRIDE -``` -Get a const reference to the reference counter. - ---- - -```cpp -void release() ETL_OVERRIDE -``` -Does nothing for a persistent message. - -## For C++11, with atomic support. - -```cpp -template -using atomic_counted_message = etl::reference_counted_message; -``` -Defines an alias to a reference counted message that uses an atomic. - diff --git a/docs/messaging_temp/shared-message.md b/docs/messaging_temp/shared-message.md deleted file mode 100644 index 79ea8a74..00000000 --- a/docs/messaging_temp/shared-message.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: "shared_message" -weight: 2 ---- - -{{< callout type="info">}} - Header: `shared_message.h` -{{< /callout >}} - -Shared Messages - -The type used to encapsulate reference counted messages. -Shared messages are usually passed by value. - -See the Shared Message Tutorial - ---- - -```cpp -template -shared_message(TPool& owner, const TMessage& message) -``` -Static asserts if `TPool` is not derived from `etl::ireference_counted_message_pool` -Static asserts if `TMessage` not derived from `etl::imessage`. - -Requires that `TPool` implements the following member function to allocate from the pool. - -```cpp -template -etl::ireference_counted_message* allocate(const TMessage& message) -``` ---- - -```cpp -explicit shared_message(etl::ireference_coutnted_message& message) -``` -Construct from a reference counted message. - ---- - -```cpp -shared_message(const etl::shared_message& other) -``` -Copy constructor. - ---- - -```cpp -shared_message& operator =(const etl::shared_message& other) -``` -Assignment operator. - ---- - -```cpp -~shared_message() -``` -Destructor. - ---- - -```cpp -ETL_NODISCARD etl::imessage& get_message() -``` -Gets a reference to the contained message. - ---- - -```cpp -ETL_NODISCARD const etl::imessage& get_message() const -``` -Gets a const reference to the contained message. - ---- - -```cpp -ETL_NODISCARD uint32_t get_reference_count() const -``` -Gets the current reference count for this shared message.