pub type MessageQueue = Pallet<Runtime>;
Aliased Type§
struct MessageQueue(/* private fields */);
Implementations
Source§impl<T> Pallet<T>where
T: Config,
impl<T> Pallet<T>where
T: Config,
Sourcepub fn reap_page(
origin: <T as Config>::RuntimeOrigin,
message_origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
page_index: u32,
) -> Result<(), DispatchError>
pub fn reap_page( origin: <T as Config>::RuntimeOrigin, message_origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, page_index: u32, ) -> Result<(), DispatchError>
Remove a page which has no more messages remaining to be processed or is stale.
Sourcepub fn execute_overweight(
origin: <T as Config>::RuntimeOrigin,
message_origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
page: u32,
index: <T as Config>::Size,
weight_limit: Weight,
) -> Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>
pub fn execute_overweight( origin: <T as Config>::RuntimeOrigin, message_origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, page: u32, index: <T as Config>::Size, weight_limit: Weight, ) -> Result<PostDispatchInfo, DispatchErrorWithPostInfo<PostDispatchInfo>>
Execute an overweight message.
Temporary processing errors will be propagated whereas permanent errors are treated as success condition.
origin
: Must beSigned
.message_origin
: The origin from which the message to be executed arrived.page
: The page in the queue in which the message to be executed is sitting.index
: The index into the queue of the message to be executed.weight_limit
: The maximum amount of weight allowed to be consumed in the execution of the message.
Benchmark complexity considerations: O(index + weight_limit).
Source§impl<T> Pallet<T>where
T: Config,
impl<T> Pallet<T>where
T: Config,
Sourcepub fn do_execute_overweight(
origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
page_index: u32,
index: <T as Config>::Size,
weight_limit: Weight,
) -> Result<Weight, Error<T>>
pub fn do_execute_overweight( origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, page_index: u32, index: <T as Config>::Size, weight_limit: Weight, ) -> Result<Weight, Error<T>>
Try to execute a single message that was marked as overweight.
The weight_limit
is the weight that can be consumed to execute the message. The base
weight of the function it self must be measured by the caller.
Sourcepub fn do_try_state() -> Result<(), DispatchError>
pub fn do_try_state() -> Result<(), DispatchError>
Ensure the correctness of state of this pallet.
§Assumptions-
If serviceHead
points to a ready Queue, then BookState of that Queue has:
message_count
> 0size
> 0end
>begin
- Some(ready_neighbours)
- If
ready_neighbours.next
== self.origin, thenready_neighbours.prev
== self.origin (only queue in ring)
For Pages(begin to end-1) in BookState:
remaining
> 0remaining_size
> 0first
<=last
- Every page can be decoded into peek_* functions
Sourcepub fn debug_info() -> String
pub fn debug_info() -> String
Print the pages in each queue and the messages in each page.
Processed messages are prefixed with a *
and the current begin
ning page with a >
.
§Example output
queue Here:
page 0: []
> page 1: []
page 2: ["\0weight=4", "\0c", ]
page 3: ["\0bigbig 1", ]
page 4: ["\0bigbig 2", ]
page 5: ["\0bigbig 3", ]
Trait Implementations
Source§impl<T> BeforeAllRuntimeMigrations for Pallet<T>where
T: Config,
impl<T> BeforeAllRuntimeMigrations for Pallet<T>where
T: Config,
Source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
Source§impl<T> Benchmarking for Pallet<T>
impl<T> Benchmarking for Pallet<T>
Source§fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
Source§fn run_benchmark(
extrinsic: &[u8],
c: &[(BenchmarkParameter, u32)],
whitelist: &[TrackedStorageKey],
verify: bool,
internal_repeats: u32,
) -> Result<Vec<BenchmarkResult>, BenchmarkError>
fn run_benchmark( extrinsic: &[u8], c: &[(BenchmarkParameter, u32)], whitelist: &[TrackedStorageKey], verify: bool, internal_repeats: u32, ) -> Result<Vec<BenchmarkResult>, BenchmarkError>
Source§impl<T> DispatchViewFunction for Pallet<T>where
T: Config,
impl<T> DispatchViewFunction for Pallet<T>where
T: Config,
fn dispatch_view_function<O>(
id: &ViewFunctionId,
input: &mut &[u8],
output: &mut O,
) -> Result<(), ViewFunctionDispatchError>where
O: Output,
Source§impl<T> EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin> for Pallet<T>where
T: Config,
impl<T> EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin> for Pallet<T>where
T: Config,
Source§type MaxMessageLen = MaxMessageLen<<<T as Config>::MessageProcessor as ProcessMessage>::Origin, <T as Config>::Size, <T as Config>::HeapSize>
type MaxMessageLen = MaxMessageLen<<<T as Config>::MessageProcessor as ProcessMessage>::Origin, <T as Config>::Size, <T as Config>::HeapSize>
Source§fn enqueue_message(
message: BoundedSlice<'_, u8, <Pallet<T> as EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin>>::MaxMessageLen>,
origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
)
fn enqueue_message( message: BoundedSlice<'_, u8, <Pallet<T> as EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin>>::MaxMessageLen>, origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, )
message
from a specific origin
.Source§fn enqueue_messages<'a>(
messages: impl Iterator<Item = BoundedSlice<'a, u8, <Pallet<T> as EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin>>::MaxMessageLen>>,
origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
)
fn enqueue_messages<'a>( messages: impl Iterator<Item = BoundedSlice<'a, u8, <Pallet<T> as EnqueueMessage<<<T as Config>::MessageProcessor as ProcessMessage>::Origin>>::MaxMessageLen>>, origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, )
messages
from a specific origin
.Source§fn sweep_queue(
origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
)
fn sweep_queue( origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, )
Source§fn footprint(
origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin,
) -> QueueFootprint
fn footprint( origin: <<T as Config>::MessageProcessor as ProcessMessage>::Origin, ) -> QueueFootprint
Source§impl<T> ForceSetHead<<<T as Config>::MessageProcessor as ProcessMessage>::Origin> for Pallet<T>where
T: Config,
impl<T> ForceSetHead<<<T as Config>::MessageProcessor as ProcessMessage>::Origin> for Pallet<T>where
T: Config,
Source§fn force_set_head(
weight: &mut WeightMeter,
origin: &<<T as Config>::MessageProcessor as ProcessMessage>::Origin,
) -> Result<bool, ()>
fn force_set_head( weight: &mut WeightMeter, origin: &<<T as Config>::MessageProcessor as ProcessMessage>::Origin, ) -> Result<bool, ()>
Source§impl<T> GetStorageVersion for Pallet<T>where
T: Config,
impl<T> GetStorageVersion for Pallet<T>where
T: Config,
Source§fn in_code_storage_version() -> <Pallet<T> as GetStorageVersion>::InCodeStorageVersion
fn in_code_storage_version() -> <Pallet<T> as GetStorageVersion>::InCodeStorageVersion
storage_version
attribute, or
NoStorageVersionSet
if the attribute is missing.Source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
Source§fn current_storage_version() -> Self::InCodeStorageVersion
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version
and will be removed after March 2024.Self::current_storage_version
instead. Read moreSource§impl<T> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn on_initialize(
_n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
) -> Weight
fn on_initialize( _n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, ) -> Weight
Source§fn on_idle(
_n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
remaining_weight: Weight,
) -> Weight
fn on_idle( _n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, remaining_weight: Weight, ) -> Weight
Hooks::on_finalize
). Read moreSource§fn try_state(
_: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
) -> Result<(), DispatchError>
fn try_state( _: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, ) -> Result<(), DispatchError>
Source§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
Source§fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Executive
pallet. Read moreSource§fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
Source§fn post_upgrade(_state: Vec<u8>) -> Result<(), DispatchError>
fn post_upgrade(_state: Vec<u8>) -> Result<(), DispatchError>
Source§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
Source§fn integrity_test()
fn integrity_test()
Source§impl<T> IntegrityTest for Pallet<T>where
T: Config,
impl<T> IntegrityTest for Pallet<T>where
T: Config,
Source§impl<T> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn on_finalize(
n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
)
fn on_finalize( n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, )
Hooks::on_finalize
.Source§impl<T> OnGenesis for Pallet<T>where
T: Config,
impl<T> OnGenesis for Pallet<T>where
T: Config,
Source§fn on_genesis()
fn on_genesis()
Source§impl<T> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn on_initialize(
n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
) -> Weight
fn on_initialize( n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, ) -> Weight
Hooks::on_initialize
.Source§impl<T> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnRuntimeUpgrade for Pallet<T>where
T: Config,
impl<T> OnRuntimeUpgrade for Pallet<T>where
T: Config,
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Source§fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
Hooks::pre_upgrade
.Source§fn post_upgrade(state: Vec<u8>) -> Result<(), DispatchError>
fn post_upgrade(state: Vec<u8>) -> Result<(), DispatchError>
Hooks::post_upgrade
.Source§fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
pre_upgrade
->
on_runtime_upgrade
-> post_upgrade
hooks for a migration. Read moreSource§impl<T> PalletInfoAccess for Pallet<T>where
T: Config,
impl<T> PalletInfoAccess for Pallet<T>where
T: Config,
Source§fn module_name() -> &'static str
fn module_name() -> &'static str
Source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
Source§impl<T> PalletsInfoAccess for Pallet<T>where
T: Config,
impl<T> PalletsInfoAccess for Pallet<T>where
T: Config,
Source§impl<T> ServiceQueues for Pallet<T>where
T: Config,
impl<T> ServiceQueues for Pallet<T>where
T: Config,
Source§fn execute_overweight(
weight_limit: Weight,
_: <Pallet<T> as ServiceQueues>::OverweightMessageAddress,
) -> Result<Weight, ExecuteOverweightError>
fn execute_overweight( weight_limit: Weight, _: <Pallet<T> as ServiceQueues>::OverweightMessageAddress, ) -> Result<Weight, ExecuteOverweightError>
Execute a single overweight message.
The weight limit must be enough for execute_overweight
and the message execution itself.
Source§type OverweightMessageAddress = (<<T as Config>::MessageProcessor as ProcessMessage>::Origin, u32, <T as Config>::Size)
type OverweightMessageAddress = (<<T as Config>::MessageProcessor as ProcessMessage>::Origin, u32, <T as Config>::Size)
Source§impl<T> StorageInfoTrait for Pallet<T>where
T: Config,
impl<T> StorageInfoTrait for Pallet<T>where
T: Config,
fn storage_info() -> Vec<StorageInfo>
Source§impl<T> TryDecodeEntireStorage for Pallet<T>where
T: Config,
impl<T> TryDecodeEntireStorage for Pallet<T>where
T: Config,
Source§fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>
fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>
Ok(bytes_decoded)
if success.Source§impl<T> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> WhitelistedStorageKeys for Pallet<T>where
T: Config,
impl<T> WhitelistedStorageKeys for Pallet<T>where
T: Config,
Source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
Vec<TrackedStorageKey>
indicating the storage keys that
should be whitelisted during benchmarking. This means that those keys
will be excluded from the benchmarking performance calculation.