// Appended in the private real three-member Queue backend module. unsafe impl os_k1060_queue::WaitQueueServices for OsK1060QueueBackend { fn wait_physical_landing( &self, p: &Self::Prepared, m: &Self::Member, ) -> Result { if p.arrived || p.nonce == 0 || p.handoff.is_none() { return Err(os_k1060_queue::Error::State); } self.bank .handoff() .target_image(p.handoff.as_ref().unwrap()) .map_err(|_| os_k1060_queue::Error::Stale)?; self.member(m)?; self.bank .wait_guest_physical_landing(m.context) .map_err(|_| os_k1060_queue::Error::Context) } fn wait_capture(&self) -> Result { self.bank .os_k1060_capture() .map_err(|_| os_k1060_queue::Error::Context) } fn wait_custody( &mut self, m: &Self::Member, owned: &mut Option, resolve: bool, ) -> Result<(), os_k1060_queue::Failure> { self.member(m).map_err(|error| os_k1060_queue::Failure { error, phase: os_k1060_context::FailurePhase::BeforeSwitch, })?; self.bank .wait_guest_custody(m.context, owned, resolve) .map_err(|f| os_k1060_queue::Failure { error: if f.phase == os_k1060_context::FailurePhase::AfterSwitch { os_k1060_queue::Error::Quarantined } else { os_k1060_queue::Error::Backend }, phase: f.phase, }) } }