referrerpolicy=no-referrer-when-downgrade
staging_xcm_builder

Trait QueryHandler

pub trait QueryHandler {
    type BlockNumber: Zero + Encode;
    type Error;
    type UniversalLocation: Get<Junctions>;

    // Required methods
    fn new_query(
        responder: impl Into<Location>,
        timeout: Self::BlockNumber,
        match_querier: impl Into<Location>,
    ) -> u64;
    fn report_outcome(
        message: &mut Xcm<()>,
        responder: impl Into<Location>,
        timeout: Self::BlockNumber,
    ) -> Result<u64, Self::Error>;
    fn take_response(id: u64) -> QueryResponseStatus<Self::BlockNumber>;
    fn expect_response(id: u64, response: Response);
}
Expand description

Provides methods to expect responses from XCMs and query their status.

Required Associated Types§

type BlockNumber: Zero + Encode

type Error

type UniversalLocation: Get<Junctions>

Required Methods§

fn new_query( responder: impl Into<Location>, timeout: Self::BlockNumber, match_querier: impl Into<Location>, ) -> u64

Attempt to create a new query ID and register it as a query that is yet to respond.

fn report_outcome( message: &mut Xcm<()>, responder: impl Into<Location>, timeout: Self::BlockNumber, ) -> Result<u64, Self::Error>

Consume message and return another which is equivalent to it except that it reports back the outcome.

  • message: The message whose outcome should be reported.
  • responder: The origin from which a response should be expected.
  • timeout: The block number after which it is permissible to return NotFound from take_response.

report_outcome may return an error if the responder is not invertible.

It is assumed that the querier of the response will be Here. The response can be queried with take_response.

fn take_response(id: u64) -> QueryResponseStatus<Self::BlockNumber>

Attempt to remove and return the response of query with ID query_id.

fn expect_response(id: u64, response: Response)

Makes sure to expect a response with the given id.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl QueryHandler for ()

§

type BlockNumber = u64

§

type Error = ()

§

type UniversalLocation = UniversalLocation

§

fn take_response( _query_id: u64, ) -> QueryResponseStatus<<() as QueryHandler>::BlockNumber>

§

fn new_query( _responder: impl Into<Location>, _timeout: <() as QueryHandler>::BlockNumber, _match_querier: impl Into<Location>, ) -> u64

§

fn report_outcome( _message: &mut Xcm<()>, _responder: impl Into<Location>, _timeout: <() as QueryHandler>::BlockNumber, ) -> Result<u64, <() as QueryHandler>::Error>

§

fn expect_response(_id: u64, _response: Response)

Implementors§

impl<T: Config> QueryHandler for Pallet<T>