mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 21:01:05 +00:00
Polkadot companion (XCM-simulator) (#560)
* Use definitions from polkadot. * Remove unused imports. * Rerun CI.
This commit is contained in:
@@ -34,7 +34,7 @@ mod tests;
|
|||||||
use codec::{Decode, Encode};
|
use codec::{Decode, Encode};
|
||||||
use cumulus_primitives_core::{
|
use cumulus_primitives_core::{
|
||||||
relay_chain::BlockNumber as RelayBlockNumber, ChannelStatus, GetChannelInfo, MessageSendError,
|
relay_chain::BlockNumber as RelayBlockNumber, ChannelStatus, GetChannelInfo, MessageSendError,
|
||||||
ParaId, XcmpMessageHandler, XcmpMessageSource,
|
ParaId, XcmpMessageHandler, XcmpMessageSource, XcmpMessageFormat,
|
||||||
};
|
};
|
||||||
use frame_support::weights::Weight;
|
use frame_support::weights::Weight;
|
||||||
use rand_chacha::{
|
use rand_chacha::{
|
||||||
@@ -208,18 +208,6 @@ pub enum ChannelSignal {
|
|||||||
Resume,
|
Resume,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The aggregate XCMP message format.
|
|
||||||
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug)]
|
|
||||||
pub enum XcmpMessageFormat {
|
|
||||||
/// Encoded `VersionedXcm` messages, all concatenated.
|
|
||||||
ConcatenatedVersionedXcm,
|
|
||||||
/// Encoded `Vec<u8>` messages, all concatenated.
|
|
||||||
ConcatenatedEncodedBlob,
|
|
||||||
/// One or more channel control signals; these should be interpreted immediately upon receipt
|
|
||||||
/// from the relay-chain.
|
|
||||||
Signals,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<T: Config> Pallet<T> {
|
impl<T: Config> Pallet<T> {
|
||||||
/// Place a message `fragment` on the outgoing XCMP queue for `recipient`.
|
/// Place a message `fragment` on the outgoing XCMP queue for `recipient`.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -19,12 +19,14 @@
|
|||||||
#![cfg_attr(not(feature = "std"), no_std)]
|
#![cfg_attr(not(feature = "std"), no_std)]
|
||||||
|
|
||||||
use codec::{Decode, Encode};
|
use codec::{Decode, Encode};
|
||||||
use frame_support::weights::Weight;
|
|
||||||
use sp_runtime::{traits::Block as BlockT, RuntimeDebug};
|
use sp_runtime::{traits::Block as BlockT, RuntimeDebug};
|
||||||
use sp_std::prelude::*;
|
use sp_std::prelude::*;
|
||||||
|
|
||||||
pub use polkadot_core_primitives::InboundDownwardMessage;
|
pub use polkadot_core_primitives::InboundDownwardMessage;
|
||||||
pub use polkadot_parachain::primitives::{Id as ParaId, UpwardMessage, ValidationParams};
|
pub use polkadot_parachain::primitives::{
|
||||||
|
DmpMessageHandler, Id as ParaId, UpwardMessage, ValidationParams, XcmpMessageFormat,
|
||||||
|
XcmpMessageHandler,
|
||||||
|
};
|
||||||
pub use polkadot_primitives::v1::{
|
pub use polkadot_primitives::v1::{
|
||||||
AbridgedHostConfiguration, AbridgedHrmpChannel, PersistedValidationData,
|
AbridgedHostConfiguration, AbridgedHrmpChannel, PersistedValidationData,
|
||||||
};
|
};
|
||||||
@@ -34,7 +36,6 @@ pub mod relay_chain {
|
|||||||
pub use polkadot_core_primitives::*;
|
pub use polkadot_core_primitives::*;
|
||||||
pub use polkadot_primitives::{v1, v1::well_known_keys};
|
pub use polkadot_primitives::{v1, v1::well_known_keys};
|
||||||
}
|
}
|
||||||
use relay_chain::BlockNumber as RelayBlockNumber;
|
|
||||||
|
|
||||||
/// An inbound HRMP message.
|
/// An inbound HRMP message.
|
||||||
pub type InboundHrmpMessage = polkadot_primitives::v1::InboundHrmpMessage<relay_chain::BlockNumber>;
|
pub type InboundHrmpMessage = polkadot_primitives::v1::InboundHrmpMessage<relay_chain::BlockNumber>;
|
||||||
@@ -88,47 +89,6 @@ pub trait GetChannelInfo {
|
|||||||
fn get_channel_max(id: ParaId) -> Option<usize>;
|
fn get_channel_max(id: ParaId) -> Option<usize>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Something that should be called when a downward message is received.
|
|
||||||
pub trait DmpMessageHandler {
|
|
||||||
/// Handle some incoming DMP messages (note these are individual XCM messages).
|
|
||||||
///
|
|
||||||
/// Also, process messages up to some `max_weight`.
|
|
||||||
fn handle_dmp_messages(
|
|
||||||
iter: impl Iterator<Item = (RelayBlockNumber, Vec<u8>)>,
|
|
||||||
max_weight: Weight,
|
|
||||||
) -> Weight;
|
|
||||||
}
|
|
||||||
impl DmpMessageHandler for () {
|
|
||||||
fn handle_dmp_messages(
|
|
||||||
iter: impl Iterator<Item = (RelayBlockNumber, Vec<u8>)>,
|
|
||||||
_max_weight: Weight,
|
|
||||||
) -> Weight {
|
|
||||||
iter.for_each(drop);
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Something that should be called for each batch of messages received over XCMP.
|
|
||||||
pub trait XcmpMessageHandler {
|
|
||||||
/// Handle some incoming XCMP messages (note these are the big one-per-block aggregate
|
|
||||||
/// messages).
|
|
||||||
///
|
|
||||||
/// Also, process messages up to some `max_weight`.
|
|
||||||
fn handle_xcmp_messages<'a, I: Iterator<Item = (ParaId, RelayBlockNumber, &'a [u8])>>(
|
|
||||||
iter: I,
|
|
||||||
max_weight: Weight,
|
|
||||||
) -> Weight;
|
|
||||||
}
|
|
||||||
impl XcmpMessageHandler for () {
|
|
||||||
fn handle_xcmp_messages<'a, I: Iterator<Item = (ParaId, RelayBlockNumber, &'a [u8])>>(
|
|
||||||
iter: I,
|
|
||||||
_max_weight: Weight,
|
|
||||||
) -> Weight {
|
|
||||||
for _ in iter {}
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Something that should be called when sending an upward message.
|
/// Something that should be called when sending an upward message.
|
||||||
pub trait UpwardMessageSender {
|
pub trait UpwardMessageSender {
|
||||||
/// Send the given UMP message; return the expected number of blocks before the message will
|
/// Send the given UMP message; return the expected number of blocks before the message will
|
||||||
|
|||||||
Reference in New Issue
Block a user