dfir_rs/scheduled/mod.rs
1//! DFIR's outer scheduled layer. Deals with inter-subgraph runtime data-passing and scheduling.
2//!
3//! The most important item is the [`Dfir`](graph::Dfir) struct. Most of the items in this
4//! module are supporting the implementation of that struct and its operation.
5
6use crate::util::slot_vec::Key;
7
8pub mod context;
9pub mod graph;
10pub mod graph_ext;
11pub mod handoff;
12pub mod input;
13pub mod net;
14pub mod port;
15pub mod reactor;
16pub mod state;
17pub(crate) mod subgraph;
18
19pub mod ticks;
20
21/// Tag for [`SubgraphId`].
22pub enum SubgraphTag {}
23/// A subgraph's ID. Invalid if used in a different [`graph::Dfir`]
24/// instance than the original that created it.
25pub type SubgraphId = Key<SubgraphTag>;
26
27/// Tag for [`HandoffId`].
28pub enum HandoffTag {}
29/// A handoff's ID. Invalid if used in a different [`graph::Dfir`]
30/// instance than the original that created it.
31pub type HandoffId = Key<HandoffTag>;
32
33/// Tag for [`StateId`].
34pub enum StateTag {}
35/// A staten handle's ID. Invalid if used in a different [`graph::Dfir`]
36/// instance than the original that created it.
37pub type StateId = Key<StateTag>;
38
39/// Tag for [`LoopId`].
40pub enum LoopTag {}
41/// A loop's ID.
42pub type LoopId = Key<LoopTag>;