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}