pub struct ZomeCallInvocation {
pub cell_id: CellId,
pub zome: Zome,
pub cap_secret: Option<CapSecret>,
pub fn_name: FunctionName,
pub payload: ExternIO,
pub provenance: AgentPubKey,
}
Expand description
A top-level call into a zome function, i.e. coming from outside the Cell from an external Interface
Fields
cell_id: CellId
The Id of the Cell
in which this Zome-call would be invoked
zome: Zome
The Zome containing the function that would be invoked
cap_secret: Option<CapSecret>
The capability request authorization.
This can be None
and still succeed in the case where the function
in the zome being called has been given an Unrestricted status
via a CapGrant
. Otherwise, it will be necessary to provide a CapSecret
for every call.
fn_name: FunctionName
The name of the Zome function to call
payload: ExternIO
The serialized data to pass as an argument to the Zome call
provenance: AgentPubKey
The provenance of the call. Provenance means the ‘source’
so this expects the AgentPubKey
of the agent calling the Zome function
Implementations
sourceimpl ZomeCallInvocation
impl ZomeCallInvocation
to decide if a zome call is authorized:
- we need to find a live (committed and not deleted) cap grant that matches the secret
- if the live cap grant is for the current author the call is ALWAYS authorized ELSE
- the live cap grant needs to include the invocation’s provenance AND zome/function name
sourceimpl ZomeCallInvocation
impl ZomeCallInvocation
pub async fn try_from_interface_call(
conductor_api: CellConductorApi,
call: ZomeCall
) -> RibosomeResult<Self>
Trait Implementations
sourceimpl Clone for ZomeCallInvocation
impl Clone for ZomeCallInvocation
sourcefn clone(&self) -> ZomeCallInvocation
fn clone(&self) -> ZomeCallInvocation
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresourceimpl Debug for ZomeCallInvocation
impl Debug for ZomeCallInvocation
sourceimpl<'de> Deserialize<'de> for ZomeCallInvocation
impl<'de> Deserialize<'de> for ZomeCallInvocation
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl From<ZomeCallInvocation> for ZomeCall
impl From<ZomeCallInvocation> for ZomeCall
sourcefn from(inv: ZomeCallInvocation) -> Self
fn from(inv: ZomeCallInvocation) -> Self
Converts to this type from the input type.
sourceimpl Invocation for ZomeCallInvocation
impl Invocation for ZomeCallInvocation
sourcefn zomes(&self) -> ZomesToInvoke
fn zomes(&self) -> ZomesToInvoke
Some invocations call into a single zome and some call into many or all zomes.
An example of an invocation that calls across all zomes is init. Init must pass for every
zome in order for the Dna overall to successfully init.
An example of an invocation that calls a single zome is validation of an entry, because
the entry is only defined in a single zome, so it only makes sense for that exact zome to
define the validation logic for that entry.
In the future this may be expanded to support a subset of zomes that is larger than one.
For example, we may want to trigger a callback in all zomes that implement a
trait/interface, but this doesn’t exist yet, so the only valid options are All or One. Read more
sourcefn fn_components(&self) -> FnComponentsⓘNotable traits for FnComponentsimpl Iterator for FnComponents type Item = String;
fn fn_components(&self) -> FnComponentsⓘNotable traits for FnComponentsimpl Iterator for FnComponents type Item = String;
Invocations execute in a “sparse” manner of decreasing specificity. In technical terms this
means that the list of strings in FnComponents will be concatenated into a single function
name to be called, then the last string will be removed and a shorter function name will
be attempted and so on until all variations have been attempted.
For example, if FnComponents was vec![“foo”, “bar”, “baz”] it would loop as “foo_bar_baz”
then “foo_bar” then “foo”. All of those three callbacks that are defined will be called
unless a definitive callback result is returned.
See
CallbackResult::is_definitive
in zome_types.
All of the individual callback results are then folded into a single overall result value
as a From implementation on the invocation results structs (e.g. zome results vs. ribosome
results). Read moresourcefn host_input(self) -> Result<ExternIO, SerializedBytesError>
fn host_input(self) -> Result<ExternIO, SerializedBytesError>
the serialized input from the host for the wasm call
this is intentionally NOT a reference to self because ExternIO may be huge we want to be
careful about cloning invocations Read more
fn auth(&self) -> InvocationAuth
sourceimpl Serialize for ZomeCallInvocation
impl Serialize for ZomeCallInvocation
Auto Trait Implementations
impl !RefUnwindSafe for ZomeCallInvocation
impl Send for ZomeCallInvocation
impl Sync for ZomeCallInvocation
impl Unpin for ZomeCallInvocation
impl !UnwindSafe for ZomeCallInvocation
Blanket Implementations
impl<T> Any for Twhere
T: Any + ?Sized,
impl<T> Any for Twhere
T: Any + ?Sized,
fn type_id_compat(&self) -> TypeId
fn type_id_compat(&self) -> TypeId
TODO: once 1.33.0 is the minimum supported compiler version, remove
Any::type_id_compat and use StdAny::type_id instead.
https://github.com/rust-lang/rust/issues/27745 Read more
impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata(
&<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Mutably borrows from an owned value. Read more
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
impl<T> FutureExt for T
impl<T> FutureExt for T
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> 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>
impl<T> Pointable for T
impl<T> Pointable for T
impl<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>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read morefn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.