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),
}