parachains_common/
message_queue.rs1use core::marker::PhantomData;
20use cumulus_primitives_core::{AggregateMessageOrigin, ParaId};
21use frame_support::traits::{QueueFootprint, QueuePausedQuery};
22use pallet_message_queue::OnQueueChanged;
23
24pub struct NarrowOriginToSibling<Inner>(PhantomData<Inner>);
28impl<Inner: QueuePausedQuery<ParaId>> QueuePausedQuery<AggregateMessageOrigin>
29 for NarrowOriginToSibling<Inner>
30{
31 fn is_paused(origin: &AggregateMessageOrigin) -> bool {
32 match origin {
33 AggregateMessageOrigin::Sibling(id) => Inner::is_paused(id),
34 _ => false,
35 }
36 }
37}
38
39impl<Inner: OnQueueChanged<ParaId>> OnQueueChanged<AggregateMessageOrigin>
40 for NarrowOriginToSibling<Inner>
41{
42 fn on_queue_changed(origin: AggregateMessageOrigin, fp: QueueFootprint) {
43 if let AggregateMessageOrigin::Sibling(id) = origin {
44 Inner::on_queue_changed(id, fp)
45 }
46 }
47}
48
49pub struct ParaIdToSibling;
51impl sp_runtime::traits::Convert<ParaId, AggregateMessageOrigin> for ParaIdToSibling {
52 fn convert(para_id: ParaId) -> AggregateMessageOrigin {
53 AggregateMessageOrigin::Sibling(para_id)
54 }
55}