diff --git a/src/runtime2/native.rs b/src/runtime2/native.rs index bd18c4424c96977ba644e6e430c04867dadc3b14..a7bdc3e614ad8ca78aa7ef7aee1d31e5afd455fd 100644 --- a/src/runtime2/native.rs +++ b/src/runtime2/native.rs @@ -1,13 +1,11 @@ use std::collections::VecDeque; use std::sync::{Arc, Mutex, Condvar}; -use std::sync::atomic::Ordering; -use std::collections::HashMap; use crate::protocol::ComponentCreationError; use crate::protocol::eval::ValueGroup; use crate::runtime2::consensus::RoundConclusion; -use super::{ConnectorKey, ConnectorId, RuntimeInner}; +use super::{ConnectorId, RuntimeInner}; use super::branch::{BranchId, FakeTree, QueueKind, SpeculativeState}; use super::scheduler::{SchedulerCtx, ComponentCtx, MessageTicket}; use super::port::{Port, PortIdLocal, Channel, PortKind}; @@ -534,21 +532,12 @@ impl ApplicationInterface { } fn wake_up_connector_with_ping(&self) { - let connector = self.runtime.get_component_public(self.connector_id); - connector.inbox.insert_message(Message::Control(ControlMessage { + let message = ControlMessage { id: 0, sending_component_id: self.connector_id, content: ControlContent::Ping, - })); - - let should_wake_up = connector.sleeping - .compare_exchange(true, false, Ordering::SeqCst, Ordering::Acquire) - .is_ok(); - - if should_wake_up { - let key = unsafe{ ConnectorKey::from_id(self.connector_id) }; - self.runtime.push_work(key); - } + }; + self.runtime.send_message_maybe_destroyed(self.connector_id, Message::Control(message)); } fn find_port_by_id(&self, port_id: PortIdLocal) -> Option {