use std::{net::SocketAddr, path::PathBuf}; use crate::{ config::NodeRunConfig, descriptor::{Descriptor, OperatorDefinition}, id::{DataId, NodeId, OperatorId}, metadata::Metadata, DataflowId, }; pub use crate::common::{DataMessage, DropToken, SharedMemoryId, Timestamped}; // Passed via env variable #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct RuntimeConfig { pub node: NodeConfig, pub operators: Vec, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct NodeConfig { pub dataflow_id: DataflowId, pub node_id: NodeId, pub run_config: NodeRunConfig, pub daemon_communication: DaemonCommunication, pub dataflow_descriptor: Descriptor, pub dynamic: bool, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub enum DaemonCommunication { Shmem { daemon_control_region_id: SharedMemoryId, daemon_drop_region_id: SharedMemoryId, daemon_events_region_id: SharedMemoryId, daemon_events_close_region_id: SharedMemoryId, }, Tcp { socket_addr: SocketAddr, }, #[cfg(unix)] UnixDomain { socket_file: PathBuf, }, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] #[must_use] pub enum DaemonReply { Result(Result<(), String>), PreparedMessage { shared_memory_id: SharedMemoryId }, NextEvents(Vec>), NextDropEvents(Vec>), NodeConfig { result: Result }, Empty, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub enum NodeEvent { Stop, Reload { operator_id: Option, }, Input { id: DataId, metadata: Metadata, data: Option, }, InputClosed { id: DataId, }, AllInputsClosed, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub enum NodeDropEvent { OutputDropped { drop_token: DropToken }, }