pallet_contracts_mock_network/mocks/
relay_message_queue.rs1use frame_support::{parameter_types, weights::Weight};
18use xcm::latest::prelude::*;
19use xcm_simulator::{
20	AggregateMessageOrigin, ProcessMessage, ProcessMessageError, UmpQueueId, WeightMeter,
21};
22
23use crate::relay_chain::{RuntimeCall, XcmConfig};
24
25parameter_types! {
26	pub MessageQueueServiceWeight: Weight = Weight::from_parts(1_000_000_000, 1_000_000);
28	pub const MessageQueueHeapSize: u32 = 65_536;
29	pub const MessageQueueMaxStale: u32 = 16;
30}
31
32pub struct MessageProcessor;
34impl ProcessMessage for MessageProcessor {
35	type Origin = AggregateMessageOrigin;
36
37	fn process_message(
38		message: &[u8],
39		origin: Self::Origin,
40		meter: &mut WeightMeter,
41		id: &mut [u8; 32],
42	) -> Result<bool, ProcessMessageError> {
43		let para = match origin {
44			AggregateMessageOrigin::Ump(UmpQueueId::Para(para)) => para,
45		};
46		xcm_builder::ProcessXcmMessage::<
47			Junction,
48			xcm_executor::XcmExecutor<XcmConfig>,
49			RuntimeCall,
50		>::process_message(message, Junction::Parachain(para.into()), meter, id)
51	}
52}