mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 02:51:01 +00:00
Put GetWeight where it belongs (#1212)
* Put `GetWeight` where it belongs * add GetWeight to v2 * Re-export unchanged trait --------- Co-authored-by: Just van Stam <just.van.stam@gmail.com> Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
This commit is contained in:
@@ -447,11 +447,6 @@ pub mod opaque {
|
||||
pub type VersionedXcm = super::VersionedXcm<()>;
|
||||
}
|
||||
|
||||
// A simple trait to get the weight of some object.
|
||||
pub trait GetWeight<W> {
|
||||
fn weight(&self) -> latest::Weight;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn conversion_works() {
|
||||
use latest::prelude::*;
|
||||
|
||||
@@ -55,7 +55,7 @@ use super::{
|
||||
NetworkId as NewNetworkId, Response as NewResponse, WeightLimit as NewWeightLimit,
|
||||
Xcm as NewXcm,
|
||||
},
|
||||
DoubleEncoded, GetWeight,
|
||||
DoubleEncoded,
|
||||
};
|
||||
use alloc::{vec, vec::Vec};
|
||||
use bounded_collections::{ConstU32, WeakBoundedVec};
|
||||
@@ -77,7 +77,7 @@ pub use multiasset::{
|
||||
pub use multilocation::{
|
||||
Ancestor, AncestorThen, InteriorMultiLocation, Junctions, MultiLocation, Parent, ParentThen,
|
||||
};
|
||||
pub use traits::{Error, ExecuteXcm, Outcome, Result, SendError, SendResult, SendXcm};
|
||||
pub use traits::{Error, ExecuteXcm, GetWeight, Outcome, Result, SendError, SendResult, SendXcm};
|
||||
|
||||
/// Basically just the XCM (more general) version of `ParachainDispatchOrigin`.
|
||||
#[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)]
|
||||
|
||||
@@ -23,6 +23,11 @@ use scale_info::TypeInfo;
|
||||
|
||||
use super::*;
|
||||
|
||||
// A simple trait to get the weight of some object.
|
||||
pub trait GetWeight<W> {
|
||||
fn weight(&self) -> sp_weights::Weight;
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)]
|
||||
pub enum Error {
|
||||
// Errors that happen due to instructions being executed. These alone are defined in the
|
||||
|
||||
@@ -20,7 +20,7 @@ use super::v2::{
|
||||
Instruction as OldInstruction, Response as OldResponse, WeightLimit as OldWeightLimit,
|
||||
Xcm as OldXcm,
|
||||
};
|
||||
use crate::{DoubleEncoded, GetWeight};
|
||||
use crate::DoubleEncoded;
|
||||
use alloc::{vec, vec::Vec};
|
||||
use bounded_collections::{parameter_types, BoundedVec, ConstU32};
|
||||
use core::{
|
||||
@@ -54,7 +54,7 @@ pub use traits::{
|
||||
SendResult, SendXcm, Weight, XcmHash,
|
||||
};
|
||||
// These parts of XCM v2 are unchanged in XCM v3, and are re-imported here.
|
||||
pub use super::v2::OriginKind;
|
||||
pub use super::v2::{GetWeight, OriginKind};
|
||||
|
||||
/// This module's XCM version.
|
||||
pub const VERSION: super::Version = 3;
|
||||
@@ -186,6 +186,7 @@ pub mod prelude {
|
||||
AssetInstance::{self, *},
|
||||
BodyId, BodyPart, Error as XcmError, ExecuteXcm,
|
||||
Fungibility::{self, *},
|
||||
GetWeight,
|
||||
Instruction::*,
|
||||
InteriorMultiLocation,
|
||||
Junction::{self, *},
|
||||
|
||||
@@ -73,7 +73,7 @@ where
|
||||
W: XcmWeightInfo<C>,
|
||||
C: Decode + GetDispatchInfo,
|
||||
M: Get<u32>,
|
||||
Instruction<C>: xcm::GetWeight<W>,
|
||||
Instruction<C>: xcm::latest::GetWeight<W>,
|
||||
{
|
||||
fn weight(message: &mut Xcm<C>) -> Result<Weight, ()> {
|
||||
log::trace!(target: "xcm::weight", "WeightInfoBounds message: {:?}", message);
|
||||
@@ -90,7 +90,7 @@ where
|
||||
W: XcmWeightInfo<C>,
|
||||
C: Decode + GetDispatchInfo,
|
||||
M: Get<u32>,
|
||||
Instruction<C>: xcm::GetWeight<W>,
|
||||
Instruction<C>: xcm::latest::GetWeight<W>,
|
||||
{
|
||||
fn weight_with_limit(message: &Xcm<C>, instrs_limit: &mut u32) -> Result<Weight, ()> {
|
||||
let mut r: Weight = Weight::zero();
|
||||
@@ -104,7 +104,6 @@ where
|
||||
instruction: &Instruction<C>,
|
||||
instrs_limit: &mut u32,
|
||||
) -> Result<Weight, ()> {
|
||||
use xcm::GetWeight;
|
||||
let instr_weight = match instruction {
|
||||
Transact { require_weight_at_most, .. } => *require_weight_at_most,
|
||||
SetErrorHandler(xcm) | SetAppendix(xcm) => Self::weight_with_limit(xcm, instrs_limit)?,
|
||||
|
||||
Reference in New Issue
Block a user