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 clock;
23mod condition;
24mod context;
25mod control_flow;
26mod error;
27mod executor;
28mod fatal;
29mod fault;
30mod graph;
31mod grid;
32mod item;
33mod monitor;
34mod observer;
35mod payload;
36mod pool;
37mod ready_ring;
38mod runner;
39mod service;
40pub mod signal_slot;
41mod stats;
42mod task_id;
43mod task_kind;
44mod thread_attrs;
45/// Linux `timerfd`-backed absolute-grid cyclic wake source (`REQ_0268`).
46#[cfg(target_os = "linux")]
47mod timerfd;
48mod trigger;
49
50pub use channel::{Channel, EVENT_SUFFIX, NotifyOutcome, Publisher, Subscriber};
51pub use clock::{MockClock, MonotonicClock, SystemClock};
52pub use condition::{Conditional, wrap_with_condition};
53pub use context::{Context, Stoppable};
54pub use control_flow::{ControlFlow, ExecuteResult};
55pub use error::{ExecutorError, ItemError};
56pub use executor::{Executor, ExecutorBuilder, ExecutorGraphBuilder};
57pub use fatal::{FatalContext, FatalHandler, FatalSite};
58pub use fault::{ExecutorFaultReason, ExecutorFaultState, FaultReason, FaultState};
59pub use graph::{GraphBuilder, Vertex};
60pub use grid::{CyclicClock, DispatchMode, MonotonicCyclicClock};
61pub use item::{ExecutableItem, FnItem, FnItemWithTriggers, item, item_with_triggers};
62pub use monitor::ExecutionMonitor;
63pub use observer::{Observer, UserEvent};
64pub use payload::Payload;
65pub use runner::{Runner, RunnerFlags};
66pub use service::{
67    ActiveRequest, Client, PendingRequest, REQ_EVENT_SUFFIX, RESP_EVENT_SUFFIX, Server, Service,
68};
69pub use stats::{CycleObservation, StatsSnapshot, TaskStatsEntry};
70pub use task_id::TaskId;
71pub use thread_attrs::ThreadAttributes;
72pub use trigger::{RawListener, TriggerDeclarer};