Files
@ b4ac681e0e7f
Branch filter:
Location: CSY/reowolf/src/runtime2/port.rs - annotation
b4ac681e0e7f
1.2 KiB
application/rls-services+xml
WIP on message-based sync impl
daf15df0f8ca daf15df0f8ca b4ac681e0e7f cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc daf15df0f8ca daf15df0f8ca cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc cf26538b25dc 58dfabd1be9f 58dfabd1be9f cf26538b25dc | use super::global_store::ConnectorId;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) struct PortIdLocal {
pub index: u32,
}
impl PortIdLocal {
pub fn new(id: u32) -> Self {
Self{ index: id }
}
// TODO: Unsure about this, maybe remove, then also remove all struct
// instances where I call this
pub fn new_invalid() -> Self {
Self{ index: u32::MAX }
}
pub fn is_valid(&self) -> bool {
return self.index != u32::MAX;
}
}
pub enum PortKind {
Putter,
Getter,
}
/// Represents a port inside of the runtime. May be without owner if it is
/// created by the application interfacing with the runtime, instead of being
/// created by a connector.
pub struct Port {
pub self_id: PortIdLocal,
pub peer_id: PortIdLocal,
pub kind: PortKind,
pub owning_connector: ConnectorId,
pub peer_connector: ConnectorId, // might be temporarily inconsistent while peer port is sent around in non-sync phase.
}
// TODO: Turn port ID into its own type
pub struct Channel {
pub putter_id: PortIdLocal, // can put on it, so from the connector's point of view, this is an output
pub getter_id: PortIdLocal, // vice versa: can get on it, so an input for the connector
}
|