machine_check_gui/shared/snapshot/
log.rs

1use std::time::{Duration, SystemTime};
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
6pub enum StepStatus {
7    Completed,
8    Cancelled,
9}
10
11#[derive(Clone, Debug, Serialize, Deserialize)]
12pub struct StepMessage {
13    pub status: StepStatus,
14    pub num_refinements: u64,
15    pub duration: Duration,
16}
17
18#[derive(Clone, Debug, Serialize, Deserialize)]
19pub enum MessageType {
20    Error(String),
21    Step(StepMessage),
22    Reset,
23}
24
25#[derive(Clone, Debug, Serialize, Deserialize)]
26pub struct Message {
27    pub ty: MessageType,
28    pub time: SystemTime,
29}
30
31/// A snapshot of backend log messages.
32#[derive(Clone, Debug, Serialize, Deserialize)]
33pub struct Log {
34    pub messages: Vec<Message>,
35}
36
37impl Log {
38    pub fn new() -> Log {
39        Log {
40            messages: Vec::new(),
41        }
42    }
43
44    pub fn error(&mut self, msg: String) {
45        self.add_message(MessageType::Error(msg));
46    }
47
48    pub fn add_message(&mut self, msg: MessageType) {
49        let time = SystemTime::now();
50        self.messages.push(Message { ty: msg, time });
51    }
52}
53
54impl Default for Log {
55    fn default() -> Self {
56        Self::new()
57    }
58}