Skip to main content

melodium_distribution/
messages.rs

1use melodium_common::{descriptor::Version, executive::Log};
2use melodium_share::{Collection, Identifier, RawValue};
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use uuid::Uuid;
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
8pub enum Message {
9    AskDistribution(AskDistribution),
10    ConfirmDistribution(ConfirmDistribution),
11    LoadAndLaunch(LoadAndLaunch),
12    LaunchStatus(LaunchStatus),
13    Instanciate(Instanciate),
14    InstanciateStatus(InstanciateStatus),
15    InputData(InputData),
16    CloseInput(CloseInput),
17    OutputData(OutputData),
18    CloseOutput(CloseOutput),
19    Ended,
20    Log(Log),
21    LogEnded,
22    Debug(String),
23    DebugEnded,
24    Probe,
25}
26
27#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
28pub struct AskDistribution {
29    pub melodium_version: Version,
30    pub distribution_version: Version,
31    pub key: Uuid,
32    pub asking_run_id: Uuid,
33    pub group_id: Uuid,
34}
35
36#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
37pub struct ConfirmDistribution {
38    pub accept: bool,
39    pub melodium_version: Version,
40    pub distribution_version: Version,
41    pub key: Uuid,
42    pub confirming_run_id: Uuid,
43    pub group_id: Uuid,
44}
45
46#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
47pub struct LoadAndLaunch {
48    pub collection: Collection,
49    pub entrypoint: Identifier,
50    pub parameters: HashMap<String, RawValue>,
51}
52
53#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
54#[non_exhaustive]
55pub enum LaunchStatus {
56    Ok,
57    Failure(String),
58}
59
60#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
61pub struct Instanciate {
62    pub id: u64,
63}
64
65#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
66pub enum InstanciateStatus {
67    Ok { id: u64 },
68    Failure { id: u64, message: String },
69}
70
71#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
72pub struct InputData {
73    pub id: u64,
74    pub name: String,
75    pub data: Vec<RawValue>,
76}
77
78#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
79pub struct CloseInput {
80    pub id: u64,
81    pub name: String,
82}
83
84#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
85pub struct OutputData {
86    pub id: u64,
87    pub name: String,
88    pub data: Vec<RawValue>,
89}
90
91#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
92pub struct CloseOutput {
93    pub id: u64,
94    pub name: String,
95}