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}