diff --git a/src/runtime2/component/component_context.rs b/src/runtime2/component/component_context.rs index 9aab35cfd66f36787b4f538ce99d455de7475cee..94dff5badfa7677ddbe3d4b2425ddff7366afc0a 100644 --- a/src/runtime2/component/component_context.rs +++ b/src/runtime2/component/component_context.rs @@ -39,6 +39,7 @@ pub enum PortStateFlag { BlockedDueToPeerChange = 0x02, // busy changing peers, hence use of port is temporarily blocked BlockedDueToFullBuffers = 0x04, Transmitted = 0x08, // Transmitted, so cannot be used anymore + Received = 0x10, // Received, so cannot be used yet, only after the sync round } #[derive(Copy, Clone)] @@ -62,7 +63,8 @@ impl PortState { pub fn can_send(&self) -> bool { return !self.is_set(PortStateFlag::Closed) && - !self.is_set(PortStateFlag::Transmitted); + !self.is_set(PortStateFlag::Transmitted) && + !self.is_set(PortStateFlag::Received); } #[inline] @@ -102,7 +104,8 @@ impl Debug for PortState { for (flag_name, flag_value) in &[ ("closed", Closed), ("blocked_peer_change", BlockedDueToPeerChange), - ("blocked_full_buffers", BlockedDueToFullBuffers) + ("blocked_full_buffers", BlockedDueToFullBuffers), + ("transmitted", Transmitted), ] { s.field(flag_name, &self.is_set(*flag_value)); }