diff --git a/src/runtime2/component/component_pdl.rs b/src/runtime2/component/component_pdl.rs index 87aa4e0183237eb260948b5442ad319e291f09ed..b9ea01cc12e8b5278cdd85698c98e7ff25dae917 100644 --- a/src/runtime2/component/component_pdl.rs +++ b/src/runtime2/component/component_pdl.rs @@ -218,7 +218,7 @@ pub(crate) struct CompPDL { // Should be same length as the number of ports. Corresponding indices imply // message is intended for that port. pub inbox_main: InboxMain, - pub inbox_backup: Vec, + pub inbox_backup: InboxBackup, } impl Component for CompPDL { @@ -257,7 +257,7 @@ impl Component for CompPDL { Message::Control(message) => { if let Err(location_and_message) = component::default_handle_control_message( &mut self.exec_state, &mut self.control, &mut self.consensus, - message, sched_ctx, comp_ctx + message, sched_ctx, comp_ctx, &mut self.inbox_main, &mut self.inbox_backup ) { self.handle_generic_component_error(sched_ctx, location_and_message); } @@ -282,7 +282,8 @@ impl Component for CompPDL { CompMode::NonSync | CompMode::Sync => { // continue and run PDL code }, - CompMode::SyncEnd | CompMode::BlockedGet | CompMode::BlockedPut | CompMode::BlockedSelect => { + CompMode::SyncEnd | CompMode::BlockedGet | CompMode::BlockedPut | + CompMode::BlockedSelect | CompMode::BlockedPutPorts => { return CompScheduling::Sleep; } CompMode::StartExit => return component::default_handle_start_exit( @@ -342,7 +343,7 @@ impl Component for CompPDL { let send_result = component::default_send_data_message( &mut self.exec_state, target_port_id, PortInstruction::SourceLocation(expr_id), value, - sched_ctx, &mut self.consensus, comp_ctx + sched_ctx, &mut self.consensus, &mut self.control, comp_ctx ); if let Err(location_and_message) = send_result { self.handle_generic_component_error(sched_ctx, location_and_message); @@ -577,18 +578,18 @@ impl CompPDL { let mut opened_port_id_pairs = Vec::new(); let mut closed_port_id_pairs = Vec::new(); - let reservation = sched_ctx.runtime.start_create_pdl_component(); + let reservation = sched_ctx.runtime.start_create_component(); let mut created_ctx = CompCtx::new(&reservation); - // let other_proc = &sched_ctx.runtime.protocol.heap[definition_id]; - // let self_proc = &sched_ctx.runtime.protocol.heap[self.prompt.frames[0].definition]; - // dbg_code!({ - // sched_ctx.log(&format!( - // "DEBUG: Comp '{}' (ID {:?}) is creating comp '{}' (ID {:?})", - // self_proc.identifier.value.as_str(), creator_ctx.id, - // other_proc.identifier.value.as_str(), reservation.id() - // )); - // }); + let other_proc = &sched_ctx.runtime.protocol.heap[definition_id]; + let self_proc = &sched_ctx.runtime.protocol.heap[self.prompt.frames[0].definition]; + dbg_code!({ + sched_ctx.info(&format!( + "DEBUG: Comp '{}' (ID {:?}) is creating comp '{}' (ID {:?})", + self_proc.identifier.value.as_str(), creator_ctx.id, + other_proc.identifier.value.as_str(), reservation.id() + )); + }); // Take all the ports ID that are in the `args` (and currently belong to // the creator component) and translate them into new IDs that are @@ -654,7 +655,7 @@ impl CompPDL { let peer_pair = &opened_port_id_pairs[created_peer_port_index]; created_port_info.peer_port_id = peer_pair.created_id; created_port_info.peer_comp_id = reservation.id(); - todo!("either add 'self peer', or remove that idea from Ctx altogether");` + todo!("either add 'self peer', or remove that idea from Ctx altogether"); }, None => { // Peer port remains with creator component. @@ -678,7 +679,7 @@ impl CompPDL { // to message exchanges between remote peers. let total_num_ports = opened_port_id_pairs.len() + closed_port_id_pairs.len(); let component = component::create_component(&sched_ctx.runtime.protocol, definition_id, type_id, arguments, total_num_ports); - let (created_key, component) = sched_ctx.runtime.finish_create_pdl_component( + let (created_key, component) = sched_ctx.runtime.finish_create_component( reservation, component, created_ctx, false, ); component.component.on_creation(created_key.downgrade(), sched_ctx);