Files @ 9e771c9cf8d3
Branch filter:

Location: CSY/reowolf/src/runtime2/communication.rs - annotation

9e771c9cf8d3 1.0 KiB application/rls-services+xml Show Source Show as Raw Download as Raw
MH
WIP: Control messaging between components
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),
}