diff --git a/src/runtime2/communication.rs b/src/runtime2/communication.rs index f3397eeba71f6fff803b9329a782911f1e2652ee..4fee962a9b41daa870d84b2b60e71585d5b630a3 100644 --- a/src/runtime2/communication.rs +++ b/src/runtime2/communication.rs @@ -1,3 +1,4 @@ +use crate::protocol::eval::*; use super::runtime::*; #[derive(Copy, Clone)] @@ -11,6 +12,7 @@ impl PortId { pub struct Peer { pub id: CompId, + pub num_associated_ports: u32, pub(crate) handle: CompHandle, } @@ -21,6 +23,7 @@ pub enum PortKind { pub enum PortState { Open, + Blocked, Closed, } @@ -29,10 +32,36 @@ pub struct Port { pub peer_id: PortId, pub kind: PortKind, pub state: PortState, - pub local_peer_index: u32, + 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), } -/// Public inbox: accessible by all threads. Essentially a MPSC channel -pub struct InboxPublic { -} \ No newline at end of file