assemblyline_models/messages/
changes.rs1use serde::{Deserialize, Serialize};
4
5use crate::types::ServiceName;
6
7#[derive(Debug, strum::FromRepr, strum::EnumIs, PartialEq, Eq, Clone, Copy)]
8#[repr(u8)]
9pub enum Operation {
10 Added = 1,
11 Removed = 2,
12 Modified = 3,
13 Incompatible = 4
14}
15
16impl Serialize for Operation {
17 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
18 where
19 S: serde::Serializer {
20 (*self as u8).serialize(serializer)
21 }
22}
23
24impl<'de> Deserialize<'de> for Operation {
25 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
26 where
27 D: serde::Deserializer<'de> {
28 let value = u8::deserialize(deserializer)?;
29 Self::from_repr(value).ok_or(serde::de::Error::custom("could not read service change operation"))
30 }
31}
32
33#[derive(Debug, Serialize, Deserialize)]
34pub struct ServiceChange {
35 pub name: ServiceName,
36 pub operation: Operation,
37}
38
39#[derive(Debug, Serialize, Deserialize)]
40pub struct HeuristicChange {
41 pub service_name: ServiceName,
42 pub operation: Operation,
43}
44
45
46