Enum pallet_utility::pallet::Call
source · pub enum Call<T: Config> {
batch {
calls: Vec<<T as Config>::RuntimeCall>,
},
as_derivative {
index: u16,
call: Box<<T as Config>::RuntimeCall>,
},
batch_all {
calls: Vec<<T as Config>::RuntimeCall>,
},
dispatch_as {
as_origin: Box<T::PalletsOrigin>,
call: Box<<T as Config>::RuntimeCall>,
},
force_batch {
calls: Vec<<T as Config>::RuntimeCall>,
},
with_weight {
call: Box<<T as Config>::RuntimeCall>,
weight: Weight,
},
// some variants omitted
}
Expand description
Contains one variant per dispatchable that can be called by an extrinsic.
Variants
batch
Fields
calls: Vec<<T as Config>::RuntimeCall>
Send a batch of dispatch calls.
May be called from any origin except None
.
calls
: The calls to be dispatched from the same origin. The number of call must not exceed the constant:batched_calls_limit
(available in constant metadata).
If origin is root then the calls are dispatched without checking origin filter. (This
includes bypassing frame_system::Config::BaseCallFilter
).
- Complexity: O(C) where C is the number of calls to be batched.
This will return Ok
in all circumstances. To determine the success of the batch, an
event is deposited. If a call failed and the batch was interrupted, then the
BatchInterrupted
event is deposited, along with the number of successful calls made
and the error of the failed call. If all were successful, then the BatchCompleted
event is deposited.
as_derivative
Send a call through an indexed pseudonym of the sender.
Filter from origin are passed along. The call will be dispatched with an origin which use the same filter as the origin of this call.
NOTE: If you need to ensure that any account-based filtering is not honored (i.e.
because you expect proxy
to have been used prior in the call stack and you do not want
the call restrictions to apply to any sub-accounts), then use as_multi_threshold_1
in the Multisig pallet instead.
NOTE: Prior to version *12, this was called as_limited_sub
.
The dispatch origin for this call must be Signed.
batch_all
Fields
calls: Vec<<T as Config>::RuntimeCall>
Send a batch of dispatch calls and atomically execute them. The whole transaction will rollback and fail if any of the calls failed.
May be called from any origin except None
.
calls
: The calls to be dispatched from the same origin. The number of call must not exceed the constant:batched_calls_limit
(available in constant metadata).
If origin is root then the calls are dispatched without checking origin filter. (This
includes bypassing frame_system::Config::BaseCallFilter
).
- Complexity: O(C) where C is the number of calls to be batched.
dispatch_as
Dispatches a function call with a provided origin.
The dispatch origin for this call must be Root.
- O(1).
- Limited storage reads.
- One DB write (event).
- Weight of derivative
call
execution + T::WeightInfo::dispatch_as().
force_batch
Fields
calls: Vec<<T as Config>::RuntimeCall>
Send a batch of dispatch calls.
Unlike batch
, it allows errors and won’t interrupt.
May be called from any origin except None
.
calls
: The calls to be dispatched from the same origin. The number of call must not exceed the constant:batched_calls_limit
(available in constant metadata).
If origin is root then the calls are dispatch without checking origin filter. (This
includes bypassing frame_system::Config::BaseCallFilter
).
- Complexity: O(C) where C is the number of calls to be batched.
with_weight
Dispatch a function call with a specified weight.
This function does not check the weight of the call, and instead allows the Root origin to specify the weight of the call.
The dispatch origin for this call must be Root.
Implementations
sourceimpl<T: Config> Call<T>
impl<T: Config> Call<T>
sourcepub fn new_call_variant_batch(calls: Vec<<T as Config>::RuntimeCall>) -> Self
pub fn new_call_variant_batch(calls: Vec<<T as Config>::RuntimeCall>) -> Self
Create a call with the variant batch
.
sourcepub fn new_call_variant_as_derivative(
index: u16,
call: Box<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_as_derivative(
index: u16,
call: Box<<T as Config>::RuntimeCall>
) -> Self
Create a call with the variant as_derivative
.
sourcepub fn new_call_variant_batch_all(
calls: Vec<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_batch_all(
calls: Vec<<T as Config>::RuntimeCall>
) -> Self
Create a call with the variant batch_all
.
sourcepub fn new_call_variant_dispatch_as(
as_origin: Box<T::PalletsOrigin>,
call: Box<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_dispatch_as(
as_origin: Box<T::PalletsOrigin>,
call: Box<<T as Config>::RuntimeCall>
) -> Self
Create a call with the variant dispatch_as
.
sourcepub fn new_call_variant_force_batch(
calls: Vec<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_force_batch(
calls: Vec<<T as Config>::RuntimeCall>
) -> Self
Create a call with the variant force_batch
.
sourcepub fn new_call_variant_with_weight(
call: Box<<T as Config>::RuntimeCall>,
weight: Weight
) -> Self
pub fn new_call_variant_with_weight(
call: Box<<T as Config>::RuntimeCall>,
weight: Weight
) -> Self
Create a call with the variant with_weight
.
Trait Implementations
sourceimpl<T: Config> Decode for Call<T>
impl<T: Config> Decode for Call<T>
sourcefn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
sourceimpl<T: Config> Encode for Call<T>
impl<T: Config> Encode for Call<T>
sourcefn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
sourceimpl<T: Config> GetCallName for Call<T>
impl<T: Config> GetCallName for Call<T>
sourcefn get_call_name(&self) -> &'static str
fn get_call_name(&self) -> &'static str
sourcefn get_call_names() -> &'static [&'static str]
fn get_call_names() -> &'static [&'static str]
sourceimpl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
sourcefn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
DispatchInfo
, containing relevant information of this dispatch. Read moresourceimpl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
sourcefn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
frame_support::dispatch
sourceimpl<T: Config> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<T::PalletsOrigin>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
T: Config + 'static,
impl<T: Config> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<T::PalletsOrigin>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
T: Config + 'static,
sourceimpl<T: Config> UnfilteredDispatchable for Call<T>
impl<T: Config> UnfilteredDispatchable for Call<T>
type RuntimeOrigin = <T as Config>::RuntimeOrigin
type RuntimeOrigin = <T as Config>::RuntimeOrigin
frame_system::Config::RuntimeOrigin
).sourcefn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
fn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
impl<T: Config> EncodeLike<Call<T>> for Call<T>
impl<T: Config> Eq for Call<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for Call<T>where
T: RefUnwindSafe,
<T as Config>::PalletsOrigin: RefUnwindSafe,
<T as Config>::RuntimeCall: RefUnwindSafe,
impl<T> Send for Call<T>where
T: Send,
<T as Config>::PalletsOrigin: Send,
<T as Config>::RuntimeCall: Send,
impl<T> Sync for Call<T>where
T: Sync,
<T as Config>::PalletsOrigin: Sync,
<T as Config>::RuntimeCall: Sync,
impl<T> Unpin for Call<T>where
T: Unpin,
<T as Config>::RuntimeCall: Unpin,
impl<T> UnwindSafe for Call<T>where
T: UnwindSafe,
<T as Config>::PalletsOrigin: UnwindSafe,
<T as Config>::RuntimeCall: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> CheckedConversion for T
impl<T> CheckedConversion for T
sourcefn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
sourcefn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read moreimpl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
fn decode_all_with_depth_limit(limit: u32, input: &mut &[u8]) -> Result<T, Error>
Self
and consume all of the given input data. Read morefn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
fn decode_with_depth_limit<I>(limit: u32, input: &mut I) -> Result<T, Error>where
I: Input,
Self
with the given maximum recursion depth and advance input
by the number of
bytes consumed. Read moreimpl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read morefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read morefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read morefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read moresourceimpl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
sourcefn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
sourcefn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moreimpl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read morefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.sourceimpl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
sourcefn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.sourceimpl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
sourcefn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.