Skip to main content

melodium_engine/world/
track.rs

1use futures::stream::FuturesUnordered;
2use melodium_common::executive::{ResultStatus, TrackFuture, TrackId};
3
4// We don't use id nor parent_id for now, but might be useful for reporting implementations.
5#[allow(dead_code)]
6#[derive(Debug, Clone)]
7pub struct InfoTrack {
8    pub id: TrackId,
9    pub parent_id: Option<TrackId>,
10    pub ancestry_level: u64,
11    pub results: Option<TrackResult>,
12}
13
14impl InfoTrack {
15    pub fn new(id: TrackId, parent_id: Option<TrackId>, ancestry_level: u64) -> Self {
16        Self {
17            id,
18            parent_id,
19            ancestry_level,
20            results: None,
21        }
22    }
23}
24
25// We don't use ancestry_level for now, but might be useful for scheduling implementations.
26#[allow(dead_code)]
27pub struct ExecutionTrack {
28    pub id: TrackId,
29    pub ancestry_level: u64,
30    pub future: FuturesUnordered<TrackFuture>,
31}
32
33impl ExecutionTrack {
34    pub fn new(id: TrackId, ancestry_level: u64, future: FuturesUnordered<TrackFuture>) -> Self {
35        Self {
36            id,
37            ancestry_level,
38            future,
39        }
40    }
41}
42
43#[derive(Debug, Clone)]
44pub enum TrackResult {
45    AllOk(TrackId),
46    #[allow(dead_code)]
47    NotAllOk(TrackId, Vec<ResultStatus>),
48}