pub struct WithUniqueTopic<Inner>(/* private fields */);Expand description
Wrapper router which, if the message does not already end with a SetTopic instruction,
appends one to the message filled with a universally unique ID. This ID is returned from a
successful deliver.
If the message does already end with a SetTopic instruction, then it is the responsibility
of the code author to ensure that the ID supplied to SetTopic is universally unique. Due to
this property, consumers of the topic ID must be aware that a user-supplied ID may not be
unique.
This is designed to be at the top-level of any routers, since it will always mutate the
passed message reference into a None. Don’t try to combine it within a tuple except as the
last element.
Trait Implementations§
Source§impl<Inner: InspectMessageQueues> InspectMessageQueues for WithUniqueTopic<Inner>
impl<Inner: InspectMessageQueues> InspectMessageQueues for WithUniqueTopic<Inner>
Source§fn clear_messages()
fn clear_messages()
Clear the queues at the beginning of Runtime API call, so that subsequent
Self::get_messages() will return only messages generated by said Runtime API.Source§fn get_messages() -> Vec<(VersionedLocation, Vec<VersionedXcm<()>>)>
fn get_messages() -> Vec<(VersionedLocation, Vec<VersionedXcm<()>>)>
Get queued messages and their destinations.
Source§impl<Inner: SendXcm> SendXcm for WithUniqueTopic<Inner>
impl<Inner: SendXcm> SendXcm for WithUniqueTopic<Inner>
Source§type Ticket = (<Inner as SendXcm>::Ticket, [u8; 32])
type Ticket = (<Inner as SendXcm>::Ticket, [u8; 32])
Intermediate value which connects the two phases of the send operation.
Source§fn validate(
destination: &mut Option<Location>,
message: &mut Option<Xcm<()>>,
) -> SendResult<Self::Ticket>
fn validate( destination: &mut Option<Location>, message: &mut Option<Xcm<()>>, ) -> SendResult<Self::Ticket>
Check whether the given
_message is deliverable to the given _destination and if so
determine the cost which will be paid by this chain to do so, returning a Validated token
which can be used to enact delivery. Read moreAuto Trait Implementations§
impl<Inner> Freeze for WithUniqueTopic<Inner>
impl<Inner> RefUnwindSafe for WithUniqueTopic<Inner>where
Inner: RefUnwindSafe,
impl<Inner> Send for WithUniqueTopic<Inner>where
Inner: Send,
impl<Inner> Sync for WithUniqueTopic<Inner>where
Inner: Sync,
impl<Inner> Unpin for WithUniqueTopic<Inner>where
Inner: Unpin,
impl<Inner> UnwindSafe for WithUniqueTopic<Inner>where
Inner: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
Source§impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
impl<T, U> DefensiveTruncateInto<U> for Twhere
U: DefensiveTruncateFrom<T>,
Source§fn defensive_truncate_into(self) -> U
fn defensive_truncate_into(self) -> U
Defensively truncate a value and convert it into its bounded form.
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T. Read moreSource§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
Source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T.