pub trait ExecuteXcm<Call> {
    type Prepared: PreparedMessage;

    // Required methods
    fn prepare(message: Xcm<Call>) -> Result<Self::Prepared, Xcm<Call>>;
    fn execute(
        origin: impl Into<MultiLocation>,
        pre: Self::Prepared,
        id: &mut [u8; 32],
        weight_credit: Weight
    ) -> Outcome;
    fn charge_fees(
        location: impl Into<MultiLocation>,
        fees: MultiAssets
    ) -> Result<(), Error>;

    // Provided methods
    fn prepare_and_execute(
        origin: impl Into<MultiLocation>,
        message: Xcm<Call>,
        id: &mut [u8; 32],
        weight_limit: Weight,
        weight_credit: Weight
    ) -> Outcome { ... }
    fn execute_xcm(
        origin: impl Into<MultiLocation>,
        message: Xcm<Call>,
        hash: [u8; 32],
        weight_limit: Weight
    ) -> Outcome { ... }
    fn execute_xcm_in_credit(
        origin: impl Into<MultiLocation>,
        message: Xcm<Call>,
        hash: [u8; 32],
        weight_limit: Weight,
        weight_credit: Weight
    ) -> Outcome { ... }
}
Expand description

Type of XCM message executor.

Required Associated Types§

Required Methods§

source

fn prepare(message: Xcm<Call>) -> Result<Self::Prepared, Xcm<Call>>

source

fn execute( origin: impl Into<MultiLocation>, pre: Self::Prepared, id: &mut [u8; 32], weight_credit: Weight ) -> Outcome

source

fn charge_fees( location: impl Into<MultiLocation>, fees: MultiAssets ) -> Result<(), Error>

Deduct some fees to the sovereign account of the given location and place them as per the convention for fees.

Provided Methods§

source

fn prepare_and_execute( origin: impl Into<MultiLocation>, message: Xcm<Call>, id: &mut [u8; 32], weight_limit: Weight, weight_credit: Weight ) -> Outcome

source

fn execute_xcm( origin: impl Into<MultiLocation>, message: Xcm<Call>, hash: [u8; 32], weight_limit: Weight ) -> Outcome

Execute some XCM message with the message hash from origin using no more than weight_limit weight.

The weight limit is a basic hard-limit and the implementation may place further restrictions or requirements on weight and other aspects.

source

fn execute_xcm_in_credit( origin: impl Into<MultiLocation>, message: Xcm<Call>, hash: [u8; 32], weight_limit: Weight, weight_credit: Weight ) -> Outcome

Execute some XCM message with the message hash from origin using no more than weight_limit weight.

Some amount of weight_credit may be provided which, depending on the implementation, may allow execution without associated payment.

Implementations on Foreign Types§

source§

impl<C> ExecuteXcm<C> for ()

§

type Prepared = Weightless

source§

fn prepare(message: Xcm<C>) -> Result<<() as ExecuteXcm<C>>::Prepared, Xcm<C>>

source§

fn execute( _: impl Into<MultiLocation>, _: <() as ExecuteXcm<C>>::Prepared, _: &mut [u8; 32], _: Weight ) -> Outcome

source§

fn charge_fees( _location: impl Into<MultiLocation>, _fees: MultiAssets ) -> Result<(), Error>

§

impl<Config> ExecuteXcm<<Config as Config>::RuntimeCall> for XcmExecutor<Config>where Config: Config,

§

type Prepared = WeighedMessage<<Config as Config>::RuntimeCall>

§

fn prepare( message: Xcm<<Config as Config>::RuntimeCall> ) -> Result<<XcmExecutor<Config> as ExecuteXcm<<Config as Config>::RuntimeCall>>::Prepared, Xcm<<Config as Config>::RuntimeCall>>

§

fn execute( origin: impl Into<MultiLocation>, _: WeighedMessage<<Config as Config>::RuntimeCall>, id: &mut [u8; 32], weight_credit: Weight ) -> Outcome

§

fn charge_fees( origin: impl Into<MultiLocation>, fees: MultiAssets ) -> Result<(), Error>

Implementors§