mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 15:47:58 +00:00
Yieldable queues for pallet MessageQueue (#13424)
* Add Yield message processing error Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Add NoopServiceQueues Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Implement temporary error aka Yield Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Make NoopMessageProcessor generic Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Mock pausable message processor Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Test paused queues Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Integration test paused queues Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Use WeightMeter instead of weight return Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * fix Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Make compile Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Add tests Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_message_queue * Fix test Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by: command-bot <>
This commit is contained in:
committed by
GitHub
parent
84638524e7
commit
16773d3696
@@ -47,22 +47,28 @@ impl From<u32> for MessageOrigin {
|
||||
}
|
||||
}
|
||||
|
||||
/// Processes any message and consumes (1, 1) weight per message.
|
||||
pub struct NoopMessageProcessor;
|
||||
impl ProcessMessage for NoopMessageProcessor {
|
||||
type Origin = MessageOrigin;
|
||||
/// Processes any message and consumes `(REQUIRED_WEIGHT, REQUIRED_WEIGHT)` weight.
|
||||
///
|
||||
/// Returns [ProcessMessageError::Overweight] error if the weight limit is not sufficient.
|
||||
pub struct NoopMessageProcessor<Origin, const REQUIRED_WEIGHT: u64 = 1>(PhantomData<Origin>);
|
||||
impl<Origin, const REQUIRED_WEIGHT: u64> ProcessMessage
|
||||
for NoopMessageProcessor<Origin, REQUIRED_WEIGHT>
|
||||
where
|
||||
Origin: codec::FullCodec + MaxEncodedLen + Clone + Eq + PartialEq + TypeInfo + Debug,
|
||||
{
|
||||
type Origin = Origin;
|
||||
|
||||
fn process_message(
|
||||
_message: &[u8],
|
||||
_origin: Self::Origin,
|
||||
weight_limit: Weight,
|
||||
) -> Result<(bool, Weight), ProcessMessageError> {
|
||||
let weight = Weight::from_parts(1, 1);
|
||||
meter: &mut WeightMeter,
|
||||
) -> Result<bool, ProcessMessageError> {
|
||||
let required = Weight::from_parts(REQUIRED_WEIGHT, REQUIRED_WEIGHT);
|
||||
|
||||
if weight.all_lte(weight_limit) {
|
||||
Ok((true, weight))
|
||||
if meter.check_accrue(required) {
|
||||
Ok(true)
|
||||
} else {
|
||||
Err(ProcessMessageError::Overweight(weight))
|
||||
Err(ProcessMessageError::Overweight(required))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user