Trait xcm_executor::traits::QueryHandler
source · pub trait QueryHandler {
type QueryId: From<u64> + FullCodec + MaxEncodedLen + TypeInfo + Clone + Eq + PartialEq + Debug + Copy;
type BlockNumber: Zero;
type Error;
type UniversalLocation: Get<InteriorMultiLocation>;
// Required methods
fn new_query(
responder: impl Into<MultiLocation>,
timeout: Self::BlockNumber,
match_querier: impl Into<MultiLocation>
) -> QueryId;
fn report_outcome(
message: &mut Xcm<()>,
responder: impl Into<MultiLocation>,
timeout: Self::BlockNumber
) -> Result<Self::QueryId, Self::Error>;
fn take_response(
id: Self::QueryId
) -> QueryResponseStatus<Self::BlockNumber>;
}
Expand description
Provides methods to expect responses from XCMs and query their status.
Required Associated Types§
type QueryId: From<u64> + FullCodec + MaxEncodedLen + TypeInfo + Clone + Eq + PartialEq + Debug + Copy
type BlockNumber: Zero
type Error
type UniversalLocation: Get<InteriorMultiLocation>
Required Methods§
sourcefn new_query(
responder: impl Into<MultiLocation>,
timeout: Self::BlockNumber,
match_querier: impl Into<MultiLocation>
) -> QueryId
fn new_query( responder: impl Into<MultiLocation>, timeout: Self::BlockNumber, match_querier: impl Into<MultiLocation> ) -> QueryId
Attempt to create a new query ID and register it as a query that is yet to respond.
sourcefn report_outcome(
message: &mut Xcm<()>,
responder: impl Into<MultiLocation>,
timeout: Self::BlockNumber
) -> Result<Self::QueryId, Self::Error>
fn report_outcome( message: &mut Xcm<()>, responder: impl Into<MultiLocation>, timeout: Self::BlockNumber ) -> Result<Self::QueryId, 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 returnNotFound
fromtake_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
.
sourcefn take_response(id: Self::QueryId) -> QueryResponseStatus<Self::BlockNumber>
fn take_response(id: Self::QueryId) -> QueryResponseStatus<Self::BlockNumber>
Attempt to remove and return the response of query with ID query_id
.