pub struct MemoryRuntime<M: Memory> { /* private fields */ }Expand description
MemoryRuntime
Canonical owner of allocation bootstrap state for one backing memory.
The runtime owns its MemoryManager, allocation-ledger cell, bootstrap
lifecycle, committed allocation capability, opens, and diagnostics. Static
linked-program declarations are supplied separately as one immutable
SealedDeclarationSnapshot.
M needs only Memory. The runtime does not require the backing memory
to be Send, Sync, Clone, or 'static.
Implementations§
Source§impl<M: Memory> MemoryRuntime<M>
impl<M: Memory> MemoryRuntime<M>
Verify every fixed declaration and logical request for one authority in the supplied requirements against this runtime’s current commitment.
Fixed declarations must match key, ID, label and diagnostic schema; logical requests must match key, authority and diagnostic schema while retaining the host’s assigned ID. Other authorities and additional committed keys are ignored. An authority with no requirements rejects. Grants and application schema semantics are not revalidated. Success neither grants new access nor proves application lifecycle readiness.
Source§impl<M: Memory> MemoryRuntime<M>
impl<M: Memory> MemoryRuntime<M>
Sourcepub fn memory_allocations(
&self,
) -> Result<MemoryAllocations, RuntimeDiagnosticError>
pub fn memory_allocations( &self, ) -> Result<MemoryAllocations, RuntimeDiagnosticError>
Measure all IDs with a fixed metadata read and bounded current bindings.
Reads at most 34,848 backing bytes. Never initializes stores, decodes the ledger, writes, grows memory, or advances a generation. Available before bootstrap; current declaration/range bindings are then unavailable.
Sourcepub fn memory_allocation_summary(
&self,
) -> Result<MemoryAllocationSummary, RuntimeDiagnosticError>
pub fn memory_allocation_summary( &self, ) -> Result<MemoryAllocationSummary, RuntimeDiagnosticError>
Measure numeric totals and binding partitions without constructing per-ID rows or copying keys, owners or range claims. Reads at most 34,848 metadata bytes; no ledger history, writes, growth, or generation changes occur.
Source§impl<M: Memory> MemoryRuntime<M>
impl<M: Memory> MemoryRuntime<M>
Sourcepub fn diagnostic_export(
&self,
) -> Result<DiagnosticExport, RuntimeDiagnosticError>
pub fn diagnostic_export( &self, ) -> Result<DiagnosticExport, RuntimeDiagnosticError>
Export this runtime’s recovered ledger and live virtual-memory sizes.
Sourcepub fn commit_recovery_diagnostic(
&self,
) -> Result<CommitStoreDiagnostic, RuntimeDiagnosticError>
pub fn commit_recovery_diagnostic( &self, ) -> Result<CommitStoreDiagnostic, RuntimeDiagnosticError>
Diagnose protected commit recovery from this runtime’s ledger memory.
This operation is available before bootstrap when the stable-cell envelope is readable or the ledger memory is empty.
Sourcepub fn doctor_report<P>(
&self,
declarations: &SealedDeclarationSnapshot,
policy: &P,
) -> MemoryRuntimeDoctorReport
pub fn doctor_report<P>( &self, declarations: &SealedDeclarationSnapshot, policy: &P, ) -> MemoryRuntimeDoctorReport
Build preflight and lifecycle diagnostics for this runtime.
Validation checks the supplied declarations and allocation policy only.
It does not execute prepare_bootstrap, predict its completed set, or
certify consumer admission. Diagnostics never replay preparation.
Source§impl<M: Memory> MemoryRuntime<M>
impl<M: Memory> MemoryRuntime<M>
Sourcepub fn new(memory: M) -> Result<Self, RuntimeConstructionError>
pub fn new(memory: M) -> Result<Self, RuntimeConstructionError>
Construct an unbootstrapped runtime without overwriting foreign memory.
Empty backing memory is initialized as an
ic_stable_structures::MemoryManager. Nonempty memory must pass bounded
validation of the current manager header, bucket table, and extents; otherwise
construction returns a typed error before the manager can
write its header or allocation table. A pre-grown blank memory is
nonempty and is therefore rejected rather than assumed disposable.
§Errors
Returns RuntimeConstructionError::ForeignMemory for nonempty memory
without MemoryManager magic, or
RuntimeConstructionError::UnsupportedMemoryManagerVersion when the
magic is recognized but the layout version is not current. Invalid
metadata returns RuntimeConstructionError::Layout. Reopening honors
the actual persisted bucket size; only fresh memory uses 128 pages.
Sourcepub fn new_with_config(
memory: M,
config: MemoryManagerConfig,
) -> Result<Self, RuntimeConstructionError>
pub fn new_with_config( memory: M, config: MemoryManagerConfig, ) -> Result<Self, RuntimeConstructionError>
Construct with an explicit immutable bucket policy. Existing memory must match exactly; mismatches fail before manager initialization or writes.
Sourcepub const fn memory_manager_config(&self) -> MemoryManagerConfig
pub const fn memory_manager_config(&self) -> MemoryManagerConfig
Return the actual policy bound to this runtime’s sole manager.
Sourcepub const fn is_bootstrapped(&self) -> bool
pub const fn is_bootstrapped(&self) -> bool
Return whether this runtime has published committed allocation authority.
Sourcepub fn bootstrap<P: RuntimeBootstrapPolicy>(
&mut self,
declarations: &SealedDeclarationSnapshot,
policy: &P,
) -> Result<&CommittedAllocations, RuntimeBootstrapError<P::Error>>
pub fn bootstrap<P: RuntimeBootstrapPolicy>( &mut self, declarations: &SealedDeclarationSnapshot, policy: &P, ) -> Result<&CommittedAllocations, RuntimeBootstrapError<P::Error>>
Bootstrap this backing memory from one immutable declaration snapshot.
Recovery, metadata admission, policy evaluation, staging, persistence,
and capability publication are local to this runtime. A repeated call is idempotent
only when the sealed declaration snapshot and
RuntimeBootstrapPolicy::runtime_bootstrap_identity match the
successful bootstrap. A mismatch returns a typed error without
advancing the durable generation or re-evaluating policy.
Sourcepub const fn committed_allocations(
&self,
) -> Result<&CommittedAllocations, RuntimeOpenError>
pub const fn committed_allocations( &self, ) -> Result<&CommittedAllocations, RuntimeOpenError>
Borrow this runtime’s committed allocation-open capability.
Sourcepub fn open_memory_by_key(
&self,
stable_key: &str,
) -> Result<RuntimeMemory<M>, RuntimeOpenError>
pub fn open_memory_by_key( &self, stable_key: &str, ) -> Result<RuntimeMemory<M>, RuntimeOpenError>
Open by durable key using only this runtime’s persisted current capability.
Sourcepub fn open_memory(
&self,
stable_key: &str,
expected_id: u8,
) -> Result<RuntimeMemory<M>, RuntimeOpenError>
pub fn open_memory( &self, stable_key: &str, expected_id: u8, ) -> Result<RuntimeMemory<M>, RuntimeOpenError>
Open this runtime’s committed memory by stable key and expected ID.