machine_check_gui/shared/snapshot/
log.rs1use 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#[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}