libpetri_event/
net_event.rs1use std::collections::HashMap;
2use std::sync::Arc;
3
4#[derive(Debug, Clone)]
8pub enum NetEvent {
9 ExecutionStarted { net_name: Arc<str>, timestamp: u64 },
11 ExecutionCompleted { net_name: Arc<str>, timestamp: u64 },
13 TransitionEnabled {
15 transition_name: Arc<str>,
16 timestamp: u64,
17 },
18 TransitionClockRestarted {
20 transition_name: Arc<str>,
21 timestamp: u64,
22 },
23 TransitionStarted {
25 transition_name: Arc<str>,
26 timestamp: u64,
27 },
28 TransitionCompleted {
30 transition_name: Arc<str>,
31 timestamp: u64,
32 },
33 TransitionFailed {
35 transition_name: Arc<str>,
36 error: String,
37 timestamp: u64,
38 },
39 TransitionTimedOut {
41 transition_name: Arc<str>,
42 timestamp: u64,
43 },
44 ActionTimedOut {
46 transition_name: Arc<str>,
47 timeout_ms: u64,
48 timestamp: u64,
49 },
50 TokenAdded {
52 place_name: Arc<str>,
53 timestamp: u64,
54 },
55 TokenRemoved {
57 place_name: Arc<str>,
58 timestamp: u64,
59 },
60 LogMessage {
62 transition_name: Arc<str>,
63 level: String,
64 message: String,
65 timestamp: u64,
66 },
67 MarkingSnapshot {
69 marking: HashMap<Arc<str>, usize>,
70 timestamp: u64,
71 },
72}
73
74impl NetEvent {
75 pub fn timestamp(&self) -> u64 {
77 match self {
78 NetEvent::ExecutionStarted { timestamp, .. }
79 | NetEvent::ExecutionCompleted { timestamp, .. }
80 | NetEvent::TransitionEnabled { timestamp, .. }
81 | NetEvent::TransitionClockRestarted { timestamp, .. }
82 | NetEvent::TransitionStarted { timestamp, .. }
83 | NetEvent::TransitionCompleted { timestamp, .. }
84 | NetEvent::TransitionFailed { timestamp, .. }
85 | NetEvent::TransitionTimedOut { timestamp, .. }
86 | NetEvent::ActionTimedOut { timestamp, .. }
87 | NetEvent::TokenAdded { timestamp, .. }
88 | NetEvent::TokenRemoved { timestamp, .. }
89 | NetEvent::LogMessage { timestamp, .. }
90 | NetEvent::MarkingSnapshot { timestamp, .. } => *timestamp,
91 }
92 }
93
94 pub fn transition_name(&self) -> Option<&str> {
96 match self {
97 NetEvent::TransitionEnabled {
98 transition_name, ..
99 }
100 | NetEvent::TransitionClockRestarted {
101 transition_name, ..
102 }
103 | NetEvent::TransitionStarted {
104 transition_name, ..
105 }
106 | NetEvent::TransitionCompleted {
107 transition_name, ..
108 }
109 | NetEvent::TransitionFailed {
110 transition_name, ..
111 }
112 | NetEvent::TransitionTimedOut {
113 transition_name, ..
114 }
115 | NetEvent::ActionTimedOut {
116 transition_name, ..
117 }
118 | NetEvent::LogMessage {
119 transition_name, ..
120 } => Some(transition_name),
121 _ => None,
122 }
123 }
124
125 pub fn is_failure(&self) -> bool {
127 matches!(
128 self,
129 NetEvent::TransitionFailed { .. }
130 | NetEvent::TransitionTimedOut { .. }
131 | NetEvent::ActionTimedOut { .. }
132 )
133 }
134}