blockworx_router/
event.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
2pub enum EventSense {
3 Enter,
4 Scan,
5 Exit,
6}
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
9pub struct Event<T, C> {
10 time: T,
11 sense: EventSense,
12 payload: C,
13}
14
15impl<T: Copy, C: Copy> Event<T, C> {
16 pub fn sense(&self) -> EventSense {
17 self.sense
18 }
19 pub fn t(&self) -> T {
20 self.time
21 }
22 pub fn cost(&self) -> C {
23 self.payload
24 }
25 pub fn count(&self) -> i32 {
26 match self.sense {
27 EventSense::Enter => 1,
28 EventSense::Exit => -1,
29 EventSense::Scan => 0,
30 }
31 }
32 pub fn is_enter(&self) -> bool {
33 matches!(self.sense, EventSense::Enter)
34 }
35 pub fn enter(time: T, payload: C) -> Self {
36 Event {
37 time,
38 sense: EventSense::Enter,
39 payload,
40 }
41 }
42 pub fn exit(time: T, payload: C) -> Self {
43 Event {
44 time,
45 sense: EventSense::Exit,
46 payload,
47 }
48 }
49 pub fn scan(time: T, payload: C) -> Self {
50 Event {
51 time,
52 sense: EventSense::Scan,
53 payload,
54 }
55 }
56}