// SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: 2023 Snowfork use core::marker::PhantomData; use snowbridge_core::operating_mode::ExportPausedQuery; use pezsp_std::vec::Vec; use xcm::{ prelude::{Location, SendError, SendResult, SendXcm, Xcm, XcmHash}, VersionedLocation, VersionedXcm, }; use xcm_builder::InspectMessageQueues; pub struct PausableExporter(PhantomData<(PausedQuery, InnerExporter)>); impl SendXcm for PausableExporter { type Ticket = InnerExporter::Ticket; fn validate( destination: &mut Option, message: &mut Option>, ) -> SendResult { match PausedQuery::is_paused() { true => Err(SendError::NotApplicable), false => InnerExporter::validate(destination, message), } } fn deliver(ticket: Self::Ticket) -> Result { match PausedQuery::is_paused() { true => Err(SendError::NotApplicable), false => InnerExporter::deliver(ticket), } } } impl InspectMessageQueues for PausableExporter { fn clear_messages() {} /// This router needs to implement `InspectMessageQueues` but doesn't have to /// return any messages, since it just reuses the inner router. fn get_messages() -> Vec<(VersionedLocation, Vec>)> { Vec::new() } }