melodium-distribution 0.9.1

Mélodium language parsing and semantic analyser
Documentation
use melodium_common::descriptor::Version;
use melodium_share::{Collection, Identifier, RawValue};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use uuid::Uuid;

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Message {
    AskDistribution(AskDistribution),
    ConfirmDistribution(ConfirmDistribution),
    LoadAndLaunch(LoadAndLaunch),
    LaunchStatus(LaunchStatus),
    Instanciate(Instanciate),
    InstanciateStatus(InstanciateStatus),
    InputData(InputData),
    CloseInput(CloseInput),
    OutputData(OutputData),
    CloseOutput(CloseOutput),
    Ended,
    Probe,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct AskDistribution {
    pub melodium_version: Version,
    pub distribution_version: Version,
    pub key: Uuid,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConfirmDistribution {
    pub accept: bool,
    pub melodium_version: Version,
    pub distribution_version: Version,
    pub key: Uuid,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct LoadAndLaunch {
    pub collection: Collection,
    pub entrypoint: Identifier,
    pub parameters: HashMap<String, RawValue>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum LaunchStatus {
    Ok,
    Failure(String),
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Instanciate {
    pub id: u64,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum InstanciateStatus {
    Ok { id: u64 },
    Failure { id: u64, message: String },
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct InputData {
    pub id: u64,
    pub name: String,
    pub data: Vec<RawValue>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloseInput {
    pub id: u64,
    pub name: String,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct OutputData {
    pub id: u64,
    pub name: String,
    pub data: Vec<RawValue>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CloseOutput {
    pub id: u64,
    pub name: String,
}