1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! Defines core message structures, addressing, envelopes, and system signals.
//!
//! This module provides the necessary components for agent communication within the
//! Acton framework. It includes types for identifying agents, wrapping messages
//! for transmission, interacting with the message broker, and sending system-level
//! control signals.
//!
//! # Key Components
//!
//! * [`MessageAddress`]: Represents the unique, addressable endpoint of an agent,
//! combining its ID (`Ern`) and its inbox channel sender.
//! * [`OutboundEnvelope`]: A wrapper for messages being sent *from* an agent,
//! containing routing information like sender and recipient addresses.
//! * [`BrokerRequest`]: A message wrapper specifically for requests intended to be
//! broadcast via the system [`AgentBroker`](crate::common::AgentBroker).
//! * [`BrokerRequestEnvelope`]: A specialized envelope used internally by the broker
//! to distribute broadcast messages efficiently.
//! * [`SystemSignal`]: An enum representing control signals used for managing agent
//! lifecycles (e.g., `Terminate`).
//!
//! Internal submodules handle implementation details like the internal `Envelope`
//! structure used for channel transmission and messages related to broker subscriptions.
/*
* Copyright (c) 2024. Govcraft
*
* Licensed under either of
* * Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
* * MIT license: http://opensource.org/licenses/MIT
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the applicable License for the specific language governing permissions and
* limitations under that License.
*/
// --- Public Re-exports ---
pub use BrokerRequest;
pub use BrokerRequestEnvelope;
pub use MessageAddress;
pub use OutboundEnvelope;
pub use SystemSignal;
// --- Crate-Internal Re-exports ---
pub use Envelope;
pub use MessageContext;
pub use MessageError;
pub use SubscribeBroker;
pub use UnsubscribeBroker;
// --- Submodules ---
/// Defines [`BrokerRequest`].
/// Defines [`BrokerRequestEnvelope`].
/// Defines the internal `Envelope` used for channel communication.
/// Defines [`MessageContext`] passed to message handlers.
/// Defines [`MessageError`].
/// Defines [`OutboundEnvelope`].
/// Defines [`MessageAddress`].
/// Defines [`SystemSignal`].
/// Defines [`SubscribeBroker`] message.
/// Defines [`UnsubscribeBroker`] message.