Skip to main content

harmos_domain/
lib.rs

1/* ***
2 *
3 * Harmos
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 *
7 * ***
8 */
9
10/* === Modules === */
11
12mod aggregate;
13mod answer;
14pub mod artifacts;
15pub mod catalog;
16pub mod config;
17mod error;
18pub mod failure;
19pub mod identity;
20pub mod inventory;
21pub mod journal;
22pub mod listeners;
23pub mod message;
24mod metadata;
25pub mod model;
26pub mod observers;
27pub mod operations;
28pub mod plugin;
29mod presentation;
30mod refusal;
31mod registration;
32pub mod schema;
33pub mod state;
34pub mod streams;
35mod value;
36
37pub mod __private {
38    pub use crate::config::SchemaSettings;
39    pub use crate::identity::{dotted as operation_identity, segment as owner_segment, stream_subset as stream_identity};
40    pub use crate::plugin::schema_markers as PluginSchemaMarkers;
41    pub use crate::postcard_product;
42    pub extern crate serde;
43    pub extern crate serde_json;
44    pub use crate::streams::{BatchDefinition, StreamCatalog, StreamRow};
45
46    pub fn stream_definition<S: StreamRow>(id: &'static str, version: u32, window: usize) -> crate::streams::Definition {
47        crate::streams::Definition::declared::<S>(id, version, window)
48            .batching(S::batch_definition())
49            .presentation(S::metadata(), S::row_metadata())
50    }
51
52    pub use crate::inventory as PluginInventory;
53    pub use crate::plugin::{
54        Contribution as PluginContribution, Declared as PluginDeclared, Grant as PluginGrant, Requirement as PluginRequirement,
55        Requirements as PluginRequirements,
56    };
57    pub use crate::{Registrar as PluginRegistrar, RegistrationError as PluginRegistrationError};
58
59    pub trait CarrierContext {
60        const FACILITY: &'static str;
61    }
62
63    pub use crate::answer::Answer;
64    pub use crate::message::MessageError;
65    pub use crate::message::allocation::{add as decoding_add, multiply as decoding_multiply, vector as decoding_vector};
66    pub use crate::message::postcard::{Reader as PostcardReader, Value as PostcardValue};
67    pub use crate::state::{Catalogued, Mutual};
68}
69
70/* === Re-Exports === */
71
72pub use aggregate::Aggregate;
73pub use artifacts::{FRAGMENT_LIMIT, KINDS, PREFIX, ScanError, fragments};
74pub use config::{ConfigError, decode_config, encode_config, validate_config};
75pub use error::{Error, Result};
76pub use failure::Failure;
77pub use identity::{
78    DefinitionId, Identified, IdentityError, QualifiedId, Requirement, artifact_subset, qualified, qualified_len, qualify, stream_subset,
79};
80pub use inventory::StreamDeclaration;
81pub use inventory::publications::StreamSpec;
82pub use metadata::{Identifier, IdentifierError, Metadata};
83pub use refusal::{FAILED, RESERVED, Refusal, UNKNOWN, UNREADABLE, reserved};
84pub use registration::{Registrar, Registration, RegistrationError};
85pub use value::{VALUE_DEPTH, Value, ValueError};
86
87#[cfg(feature = "derive")]
88pub use harmos_macros::{
89    catalog, listener, message, observer, operation, plugin, record, records, stream, streams, transaction, transactions,
90};
91pub use message::{Digest, Fingerprint, MemorySize, Message, MessageError, Portable, Storable, btree_map_memory};
92pub use model::operations::policy::{Backoff, Jitter, OperationPolicy, RetryPolicy};
93pub use model::services::policy::{RestartPolicy, ServicePolicy};
94pub use operations::{Invokes, OperationDeclaration, OperationDefinition, Requires};
95pub use presentation::{RowMetadata, StreamField};
96pub use streams::{Axial, Batched, Definition, Prefix, Track, Tracked};
97
98/* === Imports === */
99
100// Standard Library Imports
101
102// Third Party Imports
103
104// Local Imports
105
106/* === Constants === */
107
108/* === Macros === */
109
110/* === Type Aliases === */
111
112/* === Structs === */
113
114/* === Enums === */
115
116/* === Traits === */
117
118/* === Implementations === */
119
120/* === Public Functions === */
121
122/* === Private Functions === */
123
124/* === Tests === */