Skip to main content

taktora_executor/
lib.rs

1//! # taktora-executor
2//!
3//! Execution framework on top of [iceoryx2](https://docs.rs/iceoryx2).
4//! Provides:
5//!
6//! * [`ExecutableItem`] — the unit of work the executor schedules.
7//! * [`Executor`] / [`Runner`] — the run loop and a dedicated-thread host.
8//! * [`Channel<T>`](Channel) / [`Service`] — pub/sub and request-response primitives
9//!   with paired event services so subscribers wake on send.
10//! * Sequential [chains](Executor::add_chain) and parallel
11//!   [graphs](Executor::add_graph).
12//! * Signal/slot via [`signal_slot::pair`].
13//! * Lifecycle hooks via [`Observer`] and timing hooks via
14//!   [`ExecutionMonitor`].
15//!
16//! See the workspace `README.md` for a quick-start.
17#![doc(html_root_url = "https://docs.rs/taktora-executor/0.1.0")]
18#![cfg_attr(docsrs, feature(doc_cfg))]
19
20mod chain;
21mod channel;
22mod condition;
23mod context;
24mod control_flow;
25mod error;
26mod executor;
27mod graph;
28mod item;
29mod monitor;
30mod observer;
31mod payload;
32mod pool;
33mod ready_ring;
34mod runner;
35mod service;
36pub mod signal_slot;
37mod task_id;
38mod task_kind;
39mod thread_attrs;
40mod trigger;
41
42pub use channel::{Channel, EVENT_SUFFIX, NotifyOutcome, Publisher, Subscriber};
43pub use condition::{Conditional, wrap_with_condition};
44pub use context::{Context, Stoppable};
45pub use control_flow::{ControlFlow, ExecuteResult};
46pub use error::{ExecutorError, ItemError};
47pub use executor::{Executor, ExecutorBuilder, ExecutorGraphBuilder};
48pub use graph::{GraphBuilder, Vertex};
49pub use item::{ExecutableItem, FnItem, FnItemWithTriggers, item, item_with_triggers};
50pub use monitor::ExecutionMonitor;
51pub use observer::{Observer, UserEvent};
52pub use payload::Payload;
53pub use runner::{Runner, RunnerFlags};
54pub use service::{
55    ActiveRequest, Client, PendingRequest, REQ_EVENT_SUFFIX, RESP_EVENT_SUFFIX, Server, Service,
56};
57pub use task_id::TaskId;
58pub use thread_attrs::ThreadAttributes;
59pub use trigger::{RawListener, TriggerDeclarer};