Trait frame_support::traits::QueryPreimage
source · pub trait QueryPreimage {
type H: Hash;
// Required methods
fn len(hash: &<Self::H as Hasher>::Out) -> Option<u32>;
fn fetch(hash: &<Self::H as Hasher>::Out, len: Option<u32>) -> FetchResult;
fn is_requested(hash: &<Self::H as Hasher>::Out) -> bool;
fn request(hash: &<Self::H as Hasher>::Out);
fn unrequest(hash: &<Self::H as Hasher>::Out);
// Provided methods
fn hold<T>(bounded: &Bounded<T, Self::H>) { ... }
fn drop<T>(bounded: &Bounded<T, Self::H>) { ... }
fn have<T>(bounded: &Bounded<T, Self::H>) -> bool { ... }
fn pick<T>(hash: <Self::H as Hasher>::Out, len: u32) -> Bounded<T, Self::H> { ... }
fn peek<T: Decode>(
bounded: &Bounded<T, Self::H>,
) -> Result<(T, Option<u32>), DispatchError> { ... }
fn realize<T: Decode>(
bounded: &Bounded<T, Self::H>,
) -> Result<(T, Option<u32>), DispatchError> { ... }
}
Expand description
A interface for looking up preimages from their hash on chain.
Required Associated Types§
Required Methods§
sourcefn len(hash: &<Self::H as Hasher>::Out) -> Option<u32>
fn len(hash: &<Self::H as Hasher>::Out) -> Option<u32>
Returns whether a preimage exists for a given hash and if so its length.
sourcefn fetch(hash: &<Self::H as Hasher>::Out, len: Option<u32>) -> FetchResult
fn fetch(hash: &<Self::H as Hasher>::Out, len: Option<u32>) -> FetchResult
Returns the preimage for a given hash. If given, len
must be the size of the preimage.
sourcefn is_requested(hash: &<Self::H as Hasher>::Out) -> bool
fn is_requested(hash: &<Self::H as Hasher>::Out) -> bool
Returns whether a preimage request exists for a given hash.
Provided Methods§
sourcefn hold<T>(bounded: &Bounded<T, Self::H>)
fn hold<T>(bounded: &Bounded<T, Self::H>)
Request that the data required for decoding the given bounded
value is made available.
sourcefn drop<T>(bounded: &Bounded<T, Self::H>)
fn drop<T>(bounded: &Bounded<T, Self::H>)
No longer request that the data required for decoding the given bounded
value is made
available.
sourcefn have<T>(bounded: &Bounded<T, Self::H>) -> bool
fn have<T>(bounded: &Bounded<T, Self::H>) -> bool
Check to see if all data required for the given bounded
value is available for its
decoding.
sourcefn pick<T>(hash: <Self::H as Hasher>::Out, len: u32) -> Bounded<T, Self::H>
fn pick<T>(hash: <Self::H as Hasher>::Out, len: u32) -> Bounded<T, Self::H>
Create a Bounded
instance based on the hash
and len
of the encoded value.
It also directly requests the given hash
using Self::request
.
This may not be peek
-able or realize
-able.
sourcefn peek<T: Decode>(
bounded: &Bounded<T, Self::H>,
) -> Result<(T, Option<u32>), DispatchError>
fn peek<T: Decode>( bounded: &Bounded<T, Self::H>, ) -> Result<(T, Option<u32>), DispatchError>
Convert the given bounded
instance back into its original instance, also returning the
exact size of its encoded form if it needed to be looked-up from a stored preimage).
NOTE: This does not remove any data needed for realization. If you will no longer use the
bounded
, call realize
instead or call drop
afterwards.
sourcefn realize<T: Decode>(
bounded: &Bounded<T, Self::H>,
) -> Result<(T, Option<u32>), DispatchError>
fn realize<T: Decode>( bounded: &Bounded<T, Self::H>, ) -> Result<(T, Option<u32>), DispatchError>
Convert the given bounded
value back into its original instance. If successful,
drop
any data backing it. This will not break the realisability of independently
created instances of Bounded
which happen to have identical data.