diff --git a/src/runtime2/component/component_random.rs b/src/runtime2/component/component_random.rs index 56ffe495972a8f55b68e4927b38b07a945fa01cc..2bba8b26583bd3d39d59adfd39f1b83ebb2b3857 100644 --- a/src/runtime2/component/component_random.rs +++ b/src/runtime2/component/component_random.rs @@ -27,6 +27,9 @@ pub struct ComponentRandomU32 { } impl Component for ComponentRandomU32 { + fn on_creation(&mut self, _sched_ctx: &SchedulerCtx) { + } + fn adopt_message(&mut self, _comp_ctx: &mut CompCtx, _message: DataMessage) { // Impossible since this component does not have any input ports in its // signature. @@ -90,24 +93,10 @@ impl Component for ComponentRandomU32 { random += self.random_minimum; let value_group = ValueGroup::new_stack(vec![Value::UInt32(random)]); - let port_handle = comp_ctx.get_port_handle(self.output_port_id); - let port_info = comp_ctx.get_port(port_handle); - - let scheduling = if port_info.state.is_blocked() { - // Need to wait until we can send the message - self.exec_state.set_as_blocked_put(self.output_port_id, value_group); - - CompScheduling::Sleep - } else { - let message = self.consensus.annotate_data_message(comp_ctx, port_info, value_group); - let peer_handle = comp_ctx.get_peer_handle(port_info.peer_comp_id); - let peer_info = comp_ctx.get_peer(peer_handle); - peer_info.handle.send_message(&sched_ctx.runtime, Message::Data(message), true); - - // Remain in sync mode, but after `did_perform_send` was - // set to true. - CompScheduling::Immediate - }; + let scheduling = component::default_send_data_message( + &mut self.exec_state, self.output_port_id, value_group, + sched_ctx, &mut self.consensus, comp_ctx + ); // Blocked or not, we set `did_perform_send` to true. If // blocked then the moment we become unblocked (and are back