pub struct Cell<Api = CellConductorApi, P2pCell = HolochainP2pDna>where
Api: CellConductorApiT,
P2pCell: HolochainP2pDnaT,{ /* private fields */ }
Expand description
A Cell is a grouping of the resources necessary to run workflows on behalf of an agent. It does not have a lifetime of its own aside from the lifetimes of the resources which it holds references to. Any work it does is through running a workflow, passing references to the resources needed to complete that workflow.
A Cell is guaranteed to contain a Source Chain which has undergone Genesis.
The Conductor
manages a collection of Cells, and will call functions
on the Cell when a Conductor API method is called (either a
CellConductorApi
or an AppInterfaceApi
)
Implementations
sourceimpl Cell
impl Cell
sourcepub async fn create(
id: CellId,
conductor_handle: ConductorHandle,
space: Space,
holochain_p2p_cell: HolochainP2pDna,
managed_task_add_sender: Sender<ManagedTaskAdd>,
managed_task_stop_broadcaster: Sender<()>
) -> Result<(Self, InitialQueueTriggers), CellError>
pub async fn create(
id: CellId,
conductor_handle: ConductorHandle,
space: Space,
holochain_p2p_cell: HolochainP2pDna,
managed_task_add_sender: Sender<ManagedTaskAdd>,
managed_task_stop_broadcaster: Sender<()>
) -> Result<(Self, InitialQueueTriggers), CellError>
Constructor for a Cell, which ensure the Cell is fully initialized before returning.
If it hasn’t happened already, a SourceChain will be created, and genesis will be run. If these have already happened, those steps are skipped.
No Cell will be created if the SourceChain is not ready to be used.
sourcepub async fn genesis<Ribosome>(
id: CellId,
conductor_handle: ConductorHandle,
authored_db: DbWrite<DbKindAuthored>,
dht_db: DbWrite<DbKindDht>,
dht_db_cache: DhtDbQueryCache,
ribosome: Ribosome,
membrane_proof: Option<MembraneProof>
) -> Result<(), CellError>where
Ribosome: RibosomeT + 'static,
pub async fn genesis<Ribosome>(
id: CellId,
conductor_handle: ConductorHandle,
authored_db: DbWrite<DbKindAuthored>,
dht_db: DbWrite<DbKindDht>,
dht_db_cache: DhtDbQueryCache,
ribosome: Ribosome,
membrane_proof: Option<MembraneProof>
) -> Result<(), CellError>where
Ribosome: RibosomeT + 'static,
Performs the Genesis workflow the Cell, ensuring that its initial records are committed. This is a prerequisite for any other interaction with the SourceChain
sourcepub fn holochain_p2p_dna(&self) -> &HolochainP2pDna
pub fn holochain_p2p_dna(&self) -> &HolochainP2pDna
Access a network sender that is partially applied to this cell’s DnaHash/AgentPubKey
sourcepub async fn handle_holochain_p2p_event(
&self,
evt: HolochainP2pEvent
) -> Result<(), CellError>
pub async fn handle_holochain_p2p_event(
&self,
evt: HolochainP2pEvent
) -> Result<(), CellError>
Entry point for incoming messages from the network that need to be handled
sourcepub async fn call_zome(
&self,
call: ZomeCall,
workspace_lock: Option<SourceChainWorkspace>
) -> Result<ZomeCallResult, CellError>
pub async fn call_zome(
&self,
call: ZomeCall,
workspace_lock: Option<SourceChainWorkspace>
) -> Result<ZomeCallResult, CellError>
Function called by the Conductor
Trait Implementations
Auto Trait Implementations
impl<Api = CellConductorApi, P2pCell = HolochainP2pDna> !RefUnwindSafe for Cell<Api, P2pCell>
impl<Api, P2pCell> Send for Cell<Api, P2pCell>where
P2pCell: Send,
impl<Api, P2pCell> Sync for Cell<Api, P2pCell>where
P2pCell: Sync,
impl<Api, P2pCell> Unpin for Cell<Api, P2pCell>where
Api: Unpin,
P2pCell: Unpin,
impl<Api = CellConductorApi, P2pCell = HolochainP2pDna> !UnwindSafe for Cell<Api, P2pCell>
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>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
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 more
fn 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.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more