use crate::protocol::eval::*; use super::runtime::*; #[derive(Copy, Clone)] pub struct PortId(pub u32); impl PortId { pub fn new_invalid() -> Self { return Self(u32::MAX); } } pub struct Peer { pub id: CompId, pub num_associated_ports: u32, pub(crate) handle: CompHandle, } pub enum PortKind { Putter, Getter, } pub enum PortState { Open, Blocked, Closed, } pub struct Port { pub self_id: PortId, pub peer_id: PortId, pub kind: PortKind, pub state: PortState, pub peer_comp_id: CompId, } pub struct Channel { pub putter_id: PortId, pub getter_id: PortId, } pub struct DataMessage { pub source_port_id: PortId, pub target_port_id: PortId, pub content: ValueGroup, } pub struct ControlMessage { pub id: u32, pub sender_comp_id: CompId, pub content: ControlContent, } pub enum ControlContent { Ack, Ping, PortPeerChangedBlock, PortPeerChangedUnblock, } pub enum Message { Data(DataMessage), Control(ControlMessage), }