mod errors; mod instance_methods; mod variable_methods; mod var_set_methods; mod variable_trait; use std::{ collections::HashMap, sync::{Arc, RwLock}, }; pub use crate::state_variables::variable_trait::UpnpVariable; use bevy_reflect::Reflect; use chrono::{DateTime, Utc}; pub use errors::StateVariableError; use crate::{ UpnpObjectType, value_ranges::ValueRange, variable_types::{StateValue, StateVarType}, }; /// Type pour les fonctions de condition d'événement pub type StateConditionFunc = Arc bool + Send + Sync>; /// Type pour les fonctions de parsing de valeurs depuis des chaînes pub type StringValueParser = Arc Result, StateVariableError> + Send + Sync>; /// Type pour les fonctions de sérialisation de valeurs vers des chaînes pub type ValueSerializer = Arc Result + Send + Sync>; pub struct StateVariable { object: UpnpObjectType, value_type: StateVarType, step: Option, modifiable: bool, event_conditions: Arc>>, description: String, default_value: Option, value_range: Option, allowed_values: Arc>>, send_events: bool, parse: Option, marshal: Option, } #[derive(Debug, Default, Clone)] pub struct StateVariableSet { instances: HashMap, } pub struct StateVarInstance { object: UpnpObjectType, definition: StateVariable, value: StateValue, old_value: StateValue, last_modified: DateTime, last_notification: DateTime, }