lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit 70dd3d6b8dbb88441318dd8533881af221125bc7
parent 840287902cad3be5d70c87d12904fc99d2e87eec
Author: triesap <tyson@radroots.org>
Date:   Sun,  2 Aug 2026 02:43:29 +0000

storage: document public api contract

- publish the complete storage charter and feature contract
- document cancellation commit serialization and security semantics
- add a runnable memory backend status example
- record the reviewed all-feature public API baseline

Diffstat:
Mcrates/storage/README.md | 171+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Acrates/storage/examples/memory_status.rs | 17+++++++++++++++++
Mcrates/storage/src/lib.rs | 3+--
Mdocs/api/README.md | 1+
Adocs/api/radroots_storage.txt | 1108+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 1294 insertions(+), 6 deletions(-)

diff --git a/crates/storage/README.md b/crates/storage/README.md @@ -1,7 +1,170 @@ # radroots_storage -Backend-neutral persistence abstractions for Radroots. +`radroots_storage` defines the backend-neutral persistence contracts used by +Radroots hosts. It owns canonical event persistence, durable operation journal +state, outbox and delivery evidence, projection coordination, protected-record +metadata, reliability operations, and high-level atomic workflow commits. -This package root is established for the Release V1 refactor. Storage SPIs, -models, and atomic operation contracts are migrated in the subsequent storage -checkpoints. +The package does not expose SQL, filesystem handles, database pools, raw +transactions, encryption keys, transport clients, schedulers, or application +state. Concrete backends implement these contracts; `radroots_storage_sqlite` +is the native durable backend and the opt-in [`memory`] module is the bounded +deterministic reference implementation. + +The authoritative package charter is the +[`radroots_storage` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#13-radroots_storage). + +## Typical flow + +1. A host selects a concrete backend and owns its lifecycle. +2. The host records operation preparation in [`Journal`] with a caller-owned + idempotency key. +3. Verified events enter [`EventStore`] with explicit source provenance. +4. [`Outbox`] stores transport-neutral delivery intent and evidence. +5. [`ProjectionStore`] records checkpoints and rebuild coordination while + domain reducers remain outside storage. +6. Advanced hosts use [`atomic::AtomicStorage`] to commit related journal, + event, outbox, and projection transitions as one local durable operation. +7. [`BackupSource`] exposes explicit backup, staged restore, integrity, status, + and close operations without leaking backend handles. + +[`Journal`]: crate::Journal +[`EventStore`]: crate::EventStore +[`Outbox`]: crate::Outbox +[`ProjectionStore`]: crate::ProjectionStore +[`BackupSource`]: crate::BackupSource + +```rust +use futures_executor::block_on; +use radroots_storage::{ + BackupSource, + event::SourceGeneration, + memory::MemoryStorage, + status::{ShutdownState, StorageBackend}, +}; + +let generation = SourceGeneration::new([1; 32])?; +let storage = MemoryStorage::new(generation); +let status = block_on(BackupSource::status(&storage))?; + +assert_eq!(status.backend(), StorageBackend::Memory); +assert_eq!(status.shutdown(), ShutdownState::Open); +# Ok::<(), radroots_storage::Error>(()) +``` + +The same program is available as +[`examples/memory_status.rs`](examples/memory_status.rs). + +## Public capability boundary + +The crate root exposes the ordinary aggregate [`Storage`] capability plus +`EventStore`, `Journal`, `Outbox`, `ProjectionStore`, `BackupSource`, +`StorageStatus`, and `Error`. Advanced contracts remain in their owning +modules so ordinary consumers do not accidentally depend on workflow or +protected-record internals. + +All SPIs are externally implementable, dyn-compatible `Send + Sync` traits. +Their methods return boxed `Future + Send` values, allowing the host to choose +the async executor. Implementations must not install an executor, spawn hidden +workers, read a clock, generate identities, or perform implicit retries. + +## Cancellation and commit points + +Dropping a returned future requests cancellation. Read operations may stop +without side effects. Mutating operations must document and preserve their +local durable commit point: + +- before the commit point, cancellation or failure leaves no partial state; +- after a successful commit, cancellation cannot claim rollback; +- replaying the same identity and canonical input returns the original result; +- reusing an identity with different input fails as a conflict; +- atomic workflow commits publish every requested mutation or none of them; +- rollback failure never replaces the primary operation failure. + +`JournalState::Committed` is the durable operation-journal boundary. +`AtomicStorage::commit` is the aggregate local workflow boundary. Network +publication is outside this crate and is not implied by either state. + +## Events, journal, outbox, and projections + +Event storage preserves the exact signed event, verification/admission stage, +source generation, monotonically increasing position, and every unique +transport provenance observation. Queries are bounded and generation-aware; +backends fail closed on corrupt rows or source changes. + +The journal records a command lifecycle under a validated idempotency key and +optimistic revision. The outbox persists explicit multi-target delivery plans, +leases, attempts, normalized receipts, partial success, and satisfaction +evidence without owning a transport adapter. Projection storage owns only +checkpoints, invalidation/rebuild state, and event-index manifests; reducer +algorithms and projected domain rows stay with their domain owners. + +## Protected metadata and security + +`private_artifact` stores bounded metadata and opaque durable secret references. +It never accepts domain plaintext, ciphertext bytes, or an active secret +capability. Encryption, wrapping, and provider access belong to +`radroots_secrets` and the concrete backend. + +Identifiers, paths, query sizes, revisions, timestamps, and result sets are +bounded and validated before backend work. Secret references and idempotency +keys have redacted diagnostics. Public errors are stable and do not expose SQL, +filesystem, key-provider, or transport implementation messages. The crate +forbids unsafe code. + +## Backup, restore, integrity, and close + +Backup and restore are explicit multi-stage operations. A backend captures a +versioned member plan, verifies exact member digests, and finalizes only after +all expected members are present. Restore uses isolated staging and cannot +replace live state before complete verification. Relative member paths reject +absolute paths, traversal, duplicates, and unsafe separators. + +Status and integrity inspection are passive. `close` is explicit and +idempotent; once closed, an implementation rejects ordinary operations. +Backend-specific durability fields are discriminated by `StorageBackend`: +memory does not pretend to use WAL or a process writer lock, while writable +SQLite status requires its governed lock, WAL, and busy-timeout contract. + +## Serialization + +The optional `serde` feature serializes passive identities, requests, records, +receipts, status values, manifests, and coordination metadata. Deserialization +revalidates invariants rather than trusting encoded revisions, digests, paths, +cardinality, lifecycle transitions, or derived state. + +Serialization is not a database schema or wire-protocol authority. Backend +schemas are private to their implementation, and cross-language runtime DTOs +remain owned by `radroots_protocol`. + +## Features + +| Feature | Default | Contract | +| --- | --- | --- | +| `memory` | yes | Enables the deterministic bounded in-memory reference backend. It installs no task, clock, entropy source, filesystem, or global state. | +| `serde` | yes | Adds validated serialization to passive storage values. It does not serialize backend handles, active secret capabilities, or transactions. | + +Features are additive. `--no-default-features` exposes the backend-neutral SPI +without an implementation. `memory` and `serde` are supported independently, +and `--all-features` enables both. + +## Intended consumers + +- `radroots_storage_sqlite` implements the contracts for native durable state. +- `radroots_sync` coordinates bounded ingest, projection, enqueue, and delivery. +- `radroots_sdk` composes storage with signing and transport implementations. +- Service and application hosts may implement or inject a backend while + retaining ownership of paths, runtime, cancellation, clocks, and lifecycle. + +Applications that only need ordinary Radroots operations should normally use +`radroots` or `radroots_sdk`. Implement this package directly when providing a +storage backend or advanced host composition. + +## Copyright + +Except as otherwise noted, all files in the `radroots_storage` distribution are + + Copyright (c) 2025 Tyson Lupul + +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see LICENSE included in the `radroots_storage` distribution. diff --git a/crates/storage/examples/memory_status.rs b/crates/storage/examples/memory_status.rs @@ -0,0 +1,17 @@ +use futures_executor::block_on; +use radroots_storage::{ + BackupSource, + event::SourceGeneration, + memory::MemoryStorage, + status::{ShutdownState, StorageBackend}, +}; + +fn main() -> Result<(), radroots_storage::Error> { + let generation = SourceGeneration::new([1; 32])?; + let storage = MemoryStorage::new(generation); + let status = block_on(BackupSource::status(&storage))?; + + assert_eq!(status.backend(), StorageBackend::Memory); + assert_eq!(status.shutdown(), ShutdownState::Open); + Ok(()) +} diff --git a/crates/storage/src/lib.rs b/crates/storage/src/lib.rs @@ -1,5 +1,4 @@ -//! Backend-neutral persistence abstractions for Radroots. - +#![doc = include_str!("../README.md")] #![forbid(unsafe_code)] pub mod atomic; diff --git a/docs/api/README.md b/docs/api/README.md @@ -42,3 +42,4 @@ expand a package beyond its charter. | `radroots_nostr` | [`radroots_nostr.txt`](radroots_nostr.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | | `radroots_nostr_connect` | [`radroots_nostr_connect.txt`](radroots_nostr_connect.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | | `radroots_secrets` | [`radroots_secrets.txt`](radroots_secrets.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | +| `radroots_storage` | [`radroots_storage.txt`](radroots_storage.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) | diff --git a/docs/api/radroots_storage.txt b/docs/api/radroots_storage.txt @@ -0,0 +1,1108 @@ +pub mod radroots_storage +pub mod radroots_storage::atomic +pub enum radroots_storage::atomic::AtomicCommitDisposition +pub radroots_storage::atomic::AtomicCommitDisposition::Committed +pub radroots_storage::atomic::AtomicCommitDisposition::Replay +pub enum radroots_storage::atomic::AtomicCommitOutcome +pub radroots_storage::atomic::AtomicCommitOutcome::Delivered +pub radroots_storage::atomic::AtomicCommitOutcome::Delivered::outbox: alloc::boxed::Box<radroots_storage::outbox::OutboxRecord> +pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued +pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::admission: radroots_storage::event::AdmissionReceipt +pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::journal: radroots_storage::journal::OperationRecord +pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::outbox: alloc::boxed::Box<radroots_storage::outbox::OutboxRecord> +pub radroots_storage::atomic::AtomicCommitOutcome::Ingested +pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::admission: radroots_storage::event::AdmissionReceipt +pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::projection: core::option::Option<alloc::boxed::Box<radroots_storage::projection::ProjectionStatus>> +pub radroots_storage::atomic::AtomicCommitOutcome::Prepared +pub radroots_storage::atomic::AtomicCommitOutcome::Prepared::journal: radroots_storage::journal::OperationRecord +pub radroots_storage::atomic::AtomicCommitOutcome::Signed +pub radroots_storage::atomic::AtomicCommitOutcome::Signed::event_id: radroots_event::id::EventId +pub radroots_storage::atomic::AtomicCommitOutcome::Signed::journal: radroots_storage::journal::OperationRecord +impl radroots_storage::atomic::AtomicCommitOutcome +pub const fn radroots_storage::atomic::AtomicCommitOutcome::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind +pub enum radroots_storage::atomic::AtomicWorkflow +pub radroots_storage::atomic::AtomicWorkflow::Delivered(alloc::boxed::Box<radroots_storage::outbox::DeliveryAttemptEvidence>) +pub radroots_storage::atomic::AtomicWorkflow::Enqueued(alloc::boxed::Box<radroots_storage::atomic::CommitEnqueued>) +pub radroots_storage::atomic::AtomicWorkflow::Ingested(alloc::boxed::Box<radroots_storage::atomic::CommitIngested>) +pub radroots_storage::atomic::AtomicWorkflow::Prepared(radroots_storage::journal::PrepareOperation) +pub radroots_storage::atomic::AtomicWorkflow::Signed(alloc::boxed::Box<radroots_storage::atomic::CommitSigned>) +impl radroots_storage::atomic::AtomicWorkflow +pub const fn radroots_storage::atomic::AtomicWorkflow::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind +pub enum radroots_storage::atomic::AtomicWorkflowKind +pub radroots_storage::atomic::AtomicWorkflowKind::Delivered +pub radroots_storage::atomic::AtomicWorkflowKind::Enqueued +pub radroots_storage::atomic::AtomicWorkflowKind::Ingested +pub radroots_storage::atomic::AtomicWorkflowKind::Prepared +pub radroots_storage::atomic::AtomicWorkflowKind::Signed +pub struct radroots_storage::atomic::AtomicCommit +impl radroots_storage::atomic::AtomicCommit +pub const fn radroots_storage::atomic::AtomicCommit::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId +pub const fn radroots_storage::atomic::AtomicCommit::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest +pub fn radroots_storage::atomic::AtomicCommit::new(radroots_storage::atomic::AtomicCommitId, radroots_storage::atomic::AtomicCommitDigest, u64, radroots_storage::atomic::AtomicWorkflow) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::atomic::AtomicCommit::requested_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::atomic::AtomicCommit::workflow(&self) -> &radroots_storage::atomic::AtomicWorkflow +pub struct radroots_storage::atomic::AtomicCommitDigest(_) +impl radroots_storage::atomic::AtomicCommitDigest +pub const fn radroots_storage::atomic::AtomicCommitDigest::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::atomic::AtomicCommitDigest::new([u8; 32]) -> Self +pub struct radroots_storage::atomic::AtomicCommitId(_) +impl radroots_storage::atomic::AtomicCommitId +pub const fn radroots_storage::atomic::AtomicCommitId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::atomic::AtomicCommitId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::atomic::AtomicCommitReceipt +impl radroots_storage::atomic::AtomicCommitReceipt +pub const fn radroots_storage::atomic::AtomicCommitReceipt::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId +pub const fn radroots_storage::atomic::AtomicCommitReceipt::committed_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::atomic::AtomicCommitReceipt::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest +pub const fn radroots_storage::atomic::AtomicCommitReceipt::disposition(&self) -> radroots_storage::atomic::AtomicCommitDisposition +pub fn radroots_storage::atomic::AtomicCommitReceipt::new(&radroots_storage::atomic::AtomicCommit, radroots_storage::atomic::AtomicCommitDisposition, u64, radroots_storage::atomic::AtomicCommitOutcome) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::atomic::AtomicCommitReceipt::outcome(&self) -> &radroots_storage::atomic::AtomicCommitOutcome +pub struct radroots_storage::atomic::CommitEnqueued +impl radroots_storage::atomic::CommitEnqueued +pub const fn radroots_storage::atomic::CommitEnqueued::admission(&self) -> &radroots_storage::event::EventAdmission +pub const fn radroots_storage::atomic::CommitEnqueued::committed_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::atomic::CommitEnqueued::expected_revision(&self) -> radroots_storage::journal::JournalRevision +pub const fn radroots_storage::atomic::CommitEnqueued::instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub fn radroots_storage::atomic::CommitEnqueued::new(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_storage::event::EventAdmission, radroots_storage::outbox::EnqueueOutboxItem, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::atomic::CommitEnqueued::outbox(&self) -> &radroots_storage::outbox::EnqueueOutboxItem +pub struct radroots_storage::atomic::CommitIngested +impl radroots_storage::atomic::CommitIngested +pub const fn radroots_storage::atomic::CommitIngested::admission(&self) -> &radroots_storage::event::EventAdmission +pub const fn radroots_storage::atomic::CommitIngested::new(radroots_storage::event::EventAdmission, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>) -> Self +pub const fn radroots_storage::atomic::CommitIngested::projection(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint> +pub struct radroots_storage::atomic::CommitSigned +impl radroots_storage::atomic::CommitSigned +pub const fn radroots_storage::atomic::CommitSigned::event(&self) -> &radroots_event::draft::SignedEvent +pub const fn radroots_storage::atomic::CommitSigned::expected_revision(&self) -> radroots_storage::journal::JournalRevision +pub const fn radroots_storage::atomic::CommitSigned::instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub fn radroots_storage::atomic::CommitSigned::new(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::draft::SignedEvent) -> Self +pub trait radroots_storage::atomic::AtomicStorage: core::marker::Send + core::marker::Sync +pub fn radroots_storage::atomic::AtomicStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>> +pub fn radroots_storage::atomic::AtomicStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>> +impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>> +pub mod radroots_storage::backup +pub enum radroots_storage::backup::BackupMemberKind +pub radroots_storage::backup::BackupMemberKind::Metadata +pub radroots_storage::backup::BackupMemberKind::Protected +pub radroots_storage::backup::BackupMemberKind::Runtime +pub enum radroots_storage::backup::BackupSecretPolicy +pub radroots_storage::backup::BackupSecretPolicy::ExcludeProtectedStorage +pub radroots_storage::backup::BackupSecretPolicy::IncludeProtectedStorage +pub enum radroots_storage::backup::BackupStage +pub radroots_storage::backup::BackupStage::Captured +pub radroots_storage::backup::BackupStage::Failed +pub radroots_storage::backup::BackupStage::Finalized +pub radroots_storage::backup::BackupStage::Planned +pub radroots_storage::backup::BackupStage::Verified +pub enum radroots_storage::backup::BackupTransition +pub radroots_storage::backup::BackupTransition::Captured(radroots_storage::backup::BackupManifest) +pub radroots_storage::backup::BackupTransition::Fail +pub radroots_storage::backup::BackupTransition::Finalize +pub radroots_storage::backup::BackupTransition::Verified +pub enum radroots_storage::backup::MemberVerification +pub radroots_storage::backup::MemberVerification::HashMismatch +pub radroots_storage::backup::MemberVerification::LengthMismatch +pub radroots_storage::backup::MemberVerification::Missing +pub radroots_storage::backup::MemberVerification::Unexpected +pub radroots_storage::backup::MemberVerification::UnsafePath +pub radroots_storage::backup::MemberVerification::Verified +pub enum radroots_storage::backup::RestoreStage +pub radroots_storage::backup::RestoreStage::Failed +pub radroots_storage::backup::RestoreStage::Finalized +pub radroots_storage::backup::RestoreStage::Finalizing +pub radroots_storage::backup::RestoreStage::Staging +pub radroots_storage::backup::RestoreStage::Verifying +pub enum radroots_storage::backup::RestoreTransition +pub radroots_storage::backup::RestoreTransition::Fail +pub radroots_storage::backup::RestoreTransition::Finalize +pub radroots_storage::backup::RestoreTransition::Staged +pub radroots_storage::backup::RestoreTransition::Verified(alloc::vec::Vec<radroots_storage::backup::RestoreMemberStatus>) +pub struct radroots_storage::backup::BackupFormatVersion(_) +impl radroots_storage::backup::BackupFormatVersion +pub const radroots_storage::backup::BackupFormatVersion::V1: Self +pub const fn radroots_storage::backup::BackupFormatVersion::get(self) -> u16 +pub const fn radroots_storage::backup::BackupFormatVersion::new(u16) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::backup::BackupId(_) +impl radroots_storage::backup::BackupId +pub const fn radroots_storage::backup::BackupId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::backup::BackupId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::backup::BackupManifest +impl radroots_storage::backup::BackupManifest +pub const fn radroots_storage::backup::BackupManifest::backup_id(&self) -> radroots_storage::backup::BackupId +pub const fn radroots_storage::backup::BackupManifest::created_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::backup::BackupManifest::format_version(&self) -> radroots_storage::backup::BackupFormatVersion +pub fn radroots_storage::backup::BackupManifest::member(&self, &str) -> core::option::Option<&radroots_storage::backup::BackupMember> +pub fn radroots_storage::backup::BackupManifest::members(&self) -> &[radroots_storage::backup::BackupMember] +pub fn radroots_storage::backup::BackupManifest::new(radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupId, u64, radroots_storage::backup::BackupSecretPolicy, alloc::vec::Vec<radroots_storage::backup::BackupMember>) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::backup::BackupManifest::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy +pub const fn radroots_storage::backup::BackupManifest::total_bytes(&self) -> u64 +pub struct radroots_storage::backup::BackupMember +impl radroots_storage::backup::BackupMember +pub const fn radroots_storage::backup::BackupMember::byte_length(&self) -> u64 +pub const fn radroots_storage::backup::BackupMember::kind(&self) -> radroots_storage::backup::BackupMemberKind +pub fn radroots_storage::backup::BackupMember::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::BackupMemberKind, u64, radroots_storage::backup::MemberDigest) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::backup::BackupMember::relative_path(&self) -> &str +pub const fn radroots_storage::backup::BackupMember::sha256(&self) -> radroots_storage::backup::MemberDigest +pub struct radroots_storage::backup::BackupOperation +impl radroots_storage::backup::BackupOperation +pub const fn radroots_storage::backup::BackupOperation::manifest(&self) -> core::option::Option<&radroots_storage::backup::BackupManifest> +pub const fn radroots_storage::backup::BackupOperation::plan(&self) -> &radroots_storage::backup::BackupPlan +pub const fn radroots_storage::backup::BackupOperation::planned(radroots_storage::backup::BackupPlan) -> Self +pub const fn radroots_storage::backup::BackupOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision +pub const fn radroots_storage::backup::BackupOperation::stage(&self) -> radroots_storage::backup::BackupStage +pub fn radroots_storage::backup::BackupOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::backup::BackupOperation::updated_at_unix_ms(&self) -> u64 +pub struct radroots_storage::backup::BackupPlan +impl radroots_storage::backup::BackupPlan +pub const fn radroots_storage::backup::BackupPlan::backup_id(&self) -> radroots_storage::backup::BackupId +pub const fn radroots_storage::backup::BackupPlan::format_version(&self) -> radroots_storage::backup::BackupFormatVersion +pub const fn radroots_storage::backup::BackupPlan::new(radroots_storage::backup::BackupId, radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::backup::BackupPlan::requested_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::backup::BackupPlan::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy +pub struct radroots_storage::backup::MemberDigest(_) +impl radroots_storage::backup::MemberDigest +pub const fn radroots_storage::backup::MemberDigest::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::backup::MemberDigest::new([u8; 32]) -> Self +pub struct radroots_storage::backup::ReliabilityRevision(_) +impl radroots_storage::backup::ReliabilityRevision +pub const radroots_storage::backup::ReliabilityRevision::INITIAL: Self +pub const fn radroots_storage::backup::ReliabilityRevision::get(self) -> u64 +pub const fn radroots_storage::backup::ReliabilityRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::backup::RestoreMemberStatus +impl radroots_storage::backup::RestoreMemberStatus +pub fn radroots_storage::backup::RestoreMemberStatus::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::MemberVerification) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::backup::RestoreMemberStatus::relative_path(&self) -> &str +pub const fn radroots_storage::backup::RestoreMemberStatus::verification(&self) -> radroots_storage::backup::MemberVerification +pub struct radroots_storage::backup::RestoreOperation +impl radroots_storage::backup::RestoreOperation +pub fn radroots_storage::backup::RestoreOperation::member_status(&self) -> &[radroots_storage::backup::RestoreMemberStatus] +pub const fn radroots_storage::backup::RestoreOperation::plan(&self) -> &radroots_storage::backup::RestorePlan +pub const fn radroots_storage::backup::RestoreOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision +pub const fn radroots_storage::backup::RestoreOperation::stage(&self) -> radroots_storage::backup::RestoreStage +pub const fn radroots_storage::backup::RestoreOperation::staging(radroots_storage::backup::RestorePlan) -> Self +pub fn radroots_storage::backup::RestoreOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::backup::RestorePlan +impl radroots_storage::backup::RestorePlan +pub const fn radroots_storage::backup::RestorePlan::accepted_secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy +pub const fn radroots_storage::backup::RestorePlan::manifest(&self) -> &radroots_storage::backup::BackupManifest +pub fn radroots_storage::backup::RestorePlan::new(radroots_storage::backup::BackupManifest, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::backup::RestorePlan::requested_at_unix_ms(&self) -> u64 +pub const radroots_storage::backup::BACKUP_MEMBER_MAX: usize +pub const radroots_storage::backup::BACKUP_MEMBER_PATH_MAX_BYTES: usize +pub trait radroots_storage::backup::StorageReliability: core::marker::Send + core::marker::Sync +pub fn radroots_storage::backup::StorageReliability::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::backup::StorageReliability::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub mod radroots_storage::event +pub enum radroots_storage::event::AdmissionDisposition +pub radroots_storage::event::AdmissionDisposition::Advanced +pub radroots_storage::event::AdmissionDisposition::Duplicate +pub radroots_storage::event::AdmissionDisposition::Inserted +pub enum radroots_storage::event::AdmissionStage +pub radroots_storage::event::AdmissionStage::Raw +pub radroots_storage::event::AdmissionStage::Verified +pub radroots_storage::event::AdmissionStage::Visible +pub struct radroots_storage::event::AdmissionReceipt +impl radroots_storage::event::AdmissionReceipt +pub const fn radroots_storage::event::AdmissionReceipt::disposition(&self) -> radroots_storage::event::AdmissionDisposition +pub const fn radroots_storage::event::AdmissionReceipt::event_id(&self) -> &radroots_event::id::EventId +pub const fn radroots_storage::event::AdmissionReceipt::new(radroots_event::id::EventId, radroots_storage::event::EventPosition, radroots_storage::event::AdmissionStage, radroots_storage::event::AdmissionDisposition) -> Self +pub const fn radroots_storage::event::AdmissionReceipt::position(&self) -> radroots_storage::event::EventPosition +pub const fn radroots_storage::event::AdmissionReceipt::stage(&self) -> radroots_storage::event::AdmissionStage +pub struct radroots_storage::event::EventAdmission +impl radroots_storage::event::EventAdmission +pub const fn radroots_storage::event::EventAdmission::event(&self) -> &radroots_event::draft::SignedEvent +pub fn radroots_storage::event::EventAdmission::event_id(&self) -> &radroots_event::id::EventId +pub const fn radroots_storage::event::EventAdmission::provenance(&self) -> &radroots_transport::source::EventProvenance +pub const fn radroots_storage::event::EventAdmission::raw(radroots_transport::source::ObservedEvent) -> Self +pub const fn radroots_storage::event::EventAdmission::stage(&self) -> radroots_storage::event::AdmissionStage +pub fn radroots_storage::event::EventAdmission::verified(radroots_transport::source::ObservedEvent, radroots_event::verification::SignatureVerifiedEvent) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::event::EventAdmission::verified_event(&self) -> core::option::Option<&radroots_event::verification::SignatureVerifiedEvent> +pub fn radroots_storage::event::EventAdmission::visible(radroots_transport::source::ObservedEvent, radroots_event::admission::VisibleEvent) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::event::EventAdmission::visible_event(&self) -> core::option::Option<&radroots_event::admission::VisibleEvent> +pub struct radroots_storage::event::EventPage<T> +impl<T> radroots_storage::event::EventPage<T> +pub const fn radroots_storage::event::EventPage<T>::generation(&self) -> radroots_storage::event::SourceGeneration +pub fn radroots_storage::event::EventPage<T>::items(&self) -> &[T] +pub fn radroots_storage::event::EventPage<T>::new(radroots_storage::event::SourceGeneration, alloc::vec::Vec<T>, core::option::Option<radroots_storage::event::EventCursor>, radroots_storage::event::EventQueryBounds) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::event::EventPage<T>::next_cursor(&self) -> core::option::Option<radroots_storage::event::EventCursor> +pub struct radroots_storage::event::EventPosition +impl radroots_storage::event::EventPosition +pub const fn radroots_storage::event::EventPosition::generation(self) -> radroots_storage::event::SourceGeneration +pub const fn radroots_storage::event::EventPosition::new(radroots_storage::event::SourceGeneration, radroots_storage::event::EventSequence) -> Self +pub const fn radroots_storage::event::EventPosition::sequence(self) -> radroots_storage::event::EventSequence +pub struct radroots_storage::event::EventQuery +impl radroots_storage::event::EventQuery +pub const fn radroots_storage::event::EventQuery::all(radroots_storage::event::EventQueryBounds) -> Self +pub const fn radroots_storage::event::EventQuery::bounds(&self) -> radroots_storage::event::EventQueryBounds +pub fn radroots_storage::event::EventQuery::event_ids(&self) -> &[radroots_event::id::EventId] +pub fn radroots_storage::event::EventQuery::for_ids(radroots_storage::event::EventQueryBounds, alloc::vec::Vec<radroots_event::id::EventId>) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::event::EventQuery::selects(&self, &radroots_event::id::EventId) -> bool +pub struct radroots_storage::event::EventQueryBounds +impl radroots_storage::event::EventQueryBounds +pub const fn radroots_storage::event::EventQueryBounds::after(self, radroots_storage::event::EventCursor) -> Self +pub const fn radroots_storage::event::EventQueryBounds::cursor(self) -> core::option::Option<radroots_storage::event::EventCursor> +pub const fn radroots_storage::event::EventQueryBounds::first(u16) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::event::EventQueryBounds::limit(self) -> u16 +pub struct radroots_storage::event::EventSequence(_) +impl radroots_storage::event::EventSequence +pub const fn radroots_storage::event::EventSequence::get(self) -> u64 +pub const fn radroots_storage::event::EventSequence::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::event::SourceGeneration(_) +impl radroots_storage::event::SourceGeneration +pub const fn radroots_storage::event::SourceGeneration::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::event::SourceGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::event::StoredEventProvenance +impl radroots_storage::event::StoredEventProvenance +pub const fn radroots_storage::event::StoredEventProvenance::new(radroots_storage::event::EventPosition, radroots_transport::source::EventProvenance) -> Self +pub const fn radroots_storage::event::StoredEventProvenance::position(&self) -> radroots_storage::event::EventPosition +pub const fn radroots_storage::event::StoredEventProvenance::provenance(&self) -> &radroots_transport::source::EventProvenance +pub struct radroots_storage::event::StoredRawEvent +impl radroots_storage::event::StoredRawEvent +pub const fn radroots_storage::event::StoredRawEvent::event(&self) -> &radroots_event::draft::SignedEvent +pub const fn radroots_storage::event::StoredRawEvent::new(radroots_storage::event::EventPosition, radroots_event::draft::SignedEvent, radroots_storage::event::AdmissionStage) -> Self +pub const fn radroots_storage::event::StoredRawEvent::position(&self) -> radroots_storage::event::EventPosition +pub const fn radroots_storage::event::StoredRawEvent::stage(&self) -> radroots_storage::event::AdmissionStage +pub struct radroots_storage::event::StoredVerifiedEvent +impl radroots_storage::event::StoredVerifiedEvent +pub const fn radroots_storage::event::StoredVerifiedEvent::event(&self) -> &radroots_event::verification::SignatureVerifiedEvent +pub const fn radroots_storage::event::StoredVerifiedEvent::new(radroots_storage::event::EventPosition, radroots_event::verification::SignatureVerifiedEvent) -> Self +pub const fn radroots_storage::event::StoredVerifiedEvent::position(&self) -> radroots_storage::event::EventPosition +pub struct radroots_storage::event::StoredVisibleEvent +impl radroots_storage::event::StoredVisibleEvent +pub const fn radroots_storage::event::StoredVisibleEvent::event(&self) -> &radroots_event::admission::VisibleEvent +pub const fn radroots_storage::event::StoredVisibleEvent::new(radroots_storage::event::EventPosition, radroots_event::admission::VisibleEvent) -> Self +pub const fn radroots_storage::event::StoredVisibleEvent::position(&self) -> radroots_storage::event::EventPosition +pub const radroots_storage::event::EVENT_QUERY_ID_MAX: usize +pub const radroots_storage::event::EVENT_QUERY_LIMIT_MAX: u16 +pub trait radroots_storage::event::EventStore: core::marker::Send + core::marker::Sync +pub fn radroots_storage::event::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>> +pub fn radroots_storage::event::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>> +pub fn radroots_storage::event::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>> +pub fn radroots_storage::event::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>> +pub fn radroots_storage::event::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>> +pub fn radroots_storage::event::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>> +impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>> +pub type radroots_storage::event::EventCursor = radroots_storage::event::EventPosition +pub mod radroots_storage::journal +pub enum radroots_storage::journal::CancellationState +pub radroots_storage::journal::CancellationState::CancelledBeforeCommit +pub radroots_storage::journal::CancellationState::NotRequested +pub radroots_storage::journal::CancellationState::ObservedAfterCommit +pub enum radroots_storage::journal::JournalStage +pub radroots_storage::journal::JournalStage::Committed +pub radroots_storage::journal::JournalStage::Prepared +pub radroots_storage::journal::JournalStage::Recoverable +pub radroots_storage::journal::JournalStage::Signed +pub enum radroots_storage::journal::JournalState +pub radroots_storage::journal::JournalState::Committed +pub radroots_storage::journal::JournalState::Committed::committed_at_unix_ms: u64 +pub radroots_storage::journal::JournalState::Committed::event_id: radroots_event::id::EventId +pub radroots_storage::journal::JournalState::Prepared +pub radroots_storage::journal::JournalState::Recoverable(radroots_storage::journal::RecoveryRecord) +pub radroots_storage::journal::JournalState::Signed +pub radroots_storage::journal::JournalState::Signed::event_id: radroots_event::id::EventId +impl radroots_storage::journal::JournalState +pub const fn radroots_storage::journal::JournalState::stage(&self) -> radroots_storage::journal::JournalStage +pub enum radroots_storage::journal::PrepareDisposition +pub radroots_storage::journal::PrepareDisposition::Created +pub radroots_storage::journal::PrepareDisposition::Replay +pub enum radroots_storage::journal::RecoveryPoint +pub radroots_storage::journal::RecoveryPoint::Prepared +pub radroots_storage::journal::RecoveryPoint::Signed +pub radroots_storage::journal::RecoveryPoint::Signed::event_id: radroots_event::id::EventId +pub enum radroots_storage::journal::RecoveryReason +pub radroots_storage::journal::RecoveryReason::CancelledBeforeCommit +pub radroots_storage::journal::RecoveryReason::DeadlineExceeded +pub radroots_storage::journal::RecoveryReason::Interrupted +pub radroots_storage::journal::RecoveryReason::SignerUnavailable +pub radroots_storage::journal::RecoveryReason::StorageUnavailable +pub radroots_storage::journal::RecoveryReason::TransportUnavailable +pub struct radroots_storage::journal::IdempotencyDigest(_) +impl radroots_storage::journal::IdempotencyDigest +pub const fn radroots_storage::journal::IdempotencyDigest::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::journal::IdempotencyDigest::new([u8; 32]) -> Self +pub struct radroots_storage::journal::IdempotencyKey(_) +impl radroots_storage::journal::IdempotencyKey +pub fn radroots_storage::journal::IdempotencyKey::as_str(&self) -> &str +pub fn radroots_storage::journal::IdempotencyKey::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +impl core::fmt::Debug for radroots_storage::journal::IdempotencyKey +pub fn radroots_storage::journal::IdempotencyKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl serde_core::ser::Serialize for radroots_storage::journal::IdempotencyKey +pub fn radroots_storage::journal::IdempotencyKey::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::journal::IdempotencyKey +pub fn radroots_storage::journal::IdempotencyKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_storage::journal::JournalRevision(_) +impl radroots_storage::journal::JournalRevision +pub const radroots_storage::journal::JournalRevision::INITIAL: Self +pub const fn radroots_storage::journal::JournalRevision::get(self) -> u64 +pub const fn radroots_storage::journal::JournalRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::journal::JournalTransition +impl radroots_storage::journal::JournalTransition +pub const fn radroots_storage::journal::JournalTransition::cancelled(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, u64) -> Self +pub const fn radroots_storage::journal::JournalTransition::committed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId, u64) -> Self +pub const fn radroots_storage::journal::JournalTransition::instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub const fn radroots_storage::journal::JournalTransition::recoverable(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_storage::journal::RecoveryRecord) -> Self +pub const fn radroots_storage::journal::JournalTransition::resume(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision) -> Self +pub const fn radroots_storage::journal::JournalTransition::signed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId) -> Self +pub struct radroots_storage::journal::OperationInstanceId(_) +impl radroots_storage::journal::OperationInstanceId +pub const fn radroots_storage::journal::OperationInstanceId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::journal::OperationInstanceId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::journal::OperationRecord +impl radroots_storage::journal::OperationRecord +pub const fn radroots_storage::journal::OperationRecord::cancellation(&self) -> radroots_storage::journal::CancellationState +pub fn radroots_storage::journal::OperationRecord::from_parts(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64, radroots_storage::journal::JournalRevision, radroots_storage::journal::JournalState, radroots_storage::journal::CancellationState) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::journal::OperationRecord::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey +pub const fn radroots_storage::journal::OperationRecord::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest +pub const fn radroots_storage::journal::OperationRecord::instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub const fn radroots_storage::journal::OperationRecord::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId +pub const fn radroots_storage::journal::OperationRecord::prepared_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::journal::OperationRecord::revision(&self) -> radroots_storage::journal::JournalRevision +pub const fn radroots_storage::journal::OperationRecord::state(&self) -> &radroots_storage::journal::JournalState +pub fn radroots_storage::journal::OperationRecord::transition(&self, &radroots_storage::journal::JournalTransition) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::journal::PrepareOperation +impl radroots_storage::journal::PrepareOperation +pub const fn radroots_storage::journal::PrepareOperation::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey +pub const fn radroots_storage::journal::PrepareOperation::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest +pub const fn radroots_storage::journal::PrepareOperation::instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub fn radroots_storage::journal::PrepareOperation::into_record(self) -> core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error> +pub fn radroots_storage::journal::PrepareOperation::new(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::journal::PrepareOperation::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId +pub struct radroots_storage::journal::PrepareReceipt +impl radroots_storage::journal::PrepareReceipt +pub const fn radroots_storage::journal::PrepareReceipt::disposition(&self) -> radroots_storage::journal::PrepareDisposition +pub const fn radroots_storage::journal::PrepareReceipt::new(radroots_storage::journal::PrepareDisposition, radroots_storage::journal::OperationRecord) -> Self +pub const fn radroots_storage::journal::PrepareReceipt::record(&self) -> &radroots_storage::journal::OperationRecord +pub struct radroots_storage::journal::RecoveryRecord +impl radroots_storage::journal::RecoveryRecord +pub const fn radroots_storage::journal::RecoveryRecord::attempt(&self) -> u32 +pub const fn radroots_storage::journal::RecoveryRecord::new(radroots_storage::journal::RecoveryPoint, radroots_storage::journal::RecoveryReason, u32, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::journal::RecoveryRecord::point(&self) -> &radroots_storage::journal::RecoveryPoint +pub const fn radroots_storage::journal::RecoveryRecord::reason(&self) -> radroots_storage::journal::RecoveryReason +pub const fn radroots_storage::journal::RecoveryRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64> +pub const radroots_storage::journal::IDEMPOTENCY_KEY_MAX_BYTES: usize +pub const radroots_storage::journal::RECOVERABLE_QUERY_LIMIT_MAX: u16 +pub trait radroots_storage::journal::Journal: core::marker::Send + core::marker::Sync +pub fn radroots_storage::journal::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::journal::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::journal::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>> +pub fn radroots_storage::journal::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::journal::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>> +impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>> +pub mod radroots_storage::memory +pub struct radroots_storage::memory::MemoryStorage +impl radroots_storage::memory::MemoryStorage +pub const fn radroots_storage::memory::MemoryStorage::generation(&self) -> radroots_storage::event::SourceGeneration +pub const fn radroots_storage::memory::MemoryStorage::new(radroots_storage::event::SourceGeneration) -> Self +impl core::default::Default for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::default() -> Self +impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>> +impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>> +impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>> +impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>> +impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub mod radroots_storage::outbox +pub enum radroots_storage::outbox::EnqueueDisposition +pub radroots_storage::outbox::EnqueueDisposition::Created +pub radroots_storage::outbox::EnqueueDisposition::Replay +pub enum radroots_storage::outbox::OutboxStage +pub radroots_storage::outbox::OutboxStage::Exhausted +pub radroots_storage::outbox::OutboxStage::Leased +pub radroots_storage::outbox::OutboxStage::Pending +pub radroots_storage::outbox::OutboxStage::Retryable +pub radroots_storage::outbox::OutboxStage::Satisfied +impl radroots_storage::outbox::OutboxStage +pub const fn radroots_storage::outbox::OutboxStage::is_terminal(self) -> bool +pub enum radroots_storage::outbox::SatisfactionResult +pub radroots_storage::outbox::SatisfactionResult::Exhausted +pub radroots_storage::outbox::SatisfactionResult::Pending +pub radroots_storage::outbox::SatisfactionResult::Satisfied +pub struct radroots_storage::outbox::ClaimOutboxItems +impl radroots_storage::outbox::ClaimOutboxItems +pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_expires_at_unix_ms(&self) -> u64 +pub fn radroots_storage::outbox::ClaimOutboxItems::lease_id_for(&self, radroots_storage::outbox::OutboxItemId) -> radroots_storage::outbox::LeaseId +pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_id_seed(&self) -> radroots_storage::outbox::LeaseId +pub const fn radroots_storage::outbox::ClaimOutboxItems::limit(&self) -> u16 +pub fn radroots_storage::outbox::ClaimOutboxItems::new(radroots_storage::outbox::LeaseOwner, radroots_storage::outbox::LeaseId, u64, u64, u16) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::outbox::ClaimOutboxItems::now_unix_ms(&self) -> u64 +pub const fn radroots_storage::outbox::ClaimOutboxItems::owner(&self) -> &radroots_storage::outbox::LeaseOwner +pub struct radroots_storage::outbox::ClaimedOutboxItem +impl radroots_storage::outbox::ClaimedOutboxItem +pub const fn radroots_storage::outbox::ClaimedOutboxItem::lease(&self) -> &radroots_storage::outbox::OutboxLease +pub const fn radroots_storage::outbox::ClaimedOutboxItem::new(radroots_storage::outbox::OutboxRecord, radroots_storage::outbox::OutboxLease) -> Self +pub const fn radroots_storage::outbox::ClaimedOutboxItem::record(&self) -> &radroots_storage::outbox::OutboxRecord +pub struct radroots_storage::outbox::DeliveryAttempt(_) +impl radroots_storage::outbox::DeliveryAttempt +pub const radroots_storage::outbox::DeliveryAttempt::FIRST: Self +pub const fn radroots_storage::outbox::DeliveryAttempt::get(self) -> u32 +pub const fn radroots_storage::outbox::DeliveryAttempt::new(u32) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::outbox::DeliveryAttemptEvidence +impl radroots_storage::outbox::DeliveryAttemptEvidence +pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::item_id(&self) -> radroots_storage::outbox::OutboxItemId +pub fn radroots_storage::outbox::DeliveryAttemptEvidence::new(radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, radroots_storage::outbox::DeliveryAttempt, radroots_transport::sink::DeliveryReceipt, u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::outbox::DeliveryPlanDigest(_) +impl radroots_storage::outbox::DeliveryPlanDigest +pub const fn radroots_storage::outbox::DeliveryPlanDigest::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::outbox::DeliveryPlanDigest::new([u8; 32]) -> Self +pub struct radroots_storage::outbox::EnqueueOutboxItem +impl radroots_storage::outbox::EnqueueOutboxItem +pub const fn radroots_storage::outbox::EnqueueOutboxItem::created_at_unix_ms(&self) -> u64 +pub fn radroots_storage::outbox::EnqueueOutboxItem::into_record(self) -> radroots_storage::outbox::OutboxRecord +pub const fn radroots_storage::outbox::EnqueueOutboxItem::item_id(&self) -> radroots_storage::outbox::OutboxItemId +pub fn radroots_storage::outbox::EnqueueOutboxItem::new(radroots_storage::outbox::OutboxItemId, radroots_storage::journal::OperationInstanceId, radroots_storage::outbox::DeliveryPlanDigest, radroots_transport::sink::DeliveryRequest, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::outbox::EnqueueOutboxItem::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub const fn radroots_storage::outbox::EnqueueOutboxItem::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest +pub const fn radroots_storage::outbox::EnqueueOutboxItem::request(&self) -> &radroots_transport::sink::DeliveryRequest +pub struct radroots_storage::outbox::EnqueueReceipt +impl radroots_storage::outbox::EnqueueReceipt +pub const fn radroots_storage::outbox::EnqueueReceipt::disposition(&self) -> radroots_storage::outbox::EnqueueDisposition +pub const fn radroots_storage::outbox::EnqueueReceipt::new(radroots_storage::outbox::EnqueueDisposition, radroots_storage::outbox::OutboxRecord) -> Self +pub const fn radroots_storage::outbox::EnqueueReceipt::record(&self) -> &radroots_storage::outbox::OutboxRecord +pub struct radroots_storage::outbox::LeaseId(_) +impl radroots_storage::outbox::LeaseId +pub const fn radroots_storage::outbox::LeaseId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::outbox::LeaseId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::outbox::LeaseOwner(_) +impl radroots_storage::outbox::LeaseOwner +pub fn radroots_storage::outbox::LeaseOwner::as_str(&self) -> &str +pub fn radroots_storage::outbox::LeaseOwner::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +impl core::fmt::Debug for radroots_storage::outbox::LeaseOwner +pub fn radroots_storage::outbox::LeaseOwner::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl serde_core::ser::Serialize for radroots_storage::outbox::LeaseOwner +pub fn radroots_storage::outbox::LeaseOwner::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::outbox::LeaseOwner +pub fn radroots_storage::outbox::LeaseOwner::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_storage::outbox::OutboxItemId(_) +impl radroots_storage::outbox::OutboxItemId +pub const fn radroots_storage::outbox::OutboxItemId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::outbox::OutboxItemId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::outbox::OutboxLease +impl radroots_storage::outbox::OutboxLease +pub const fn radroots_storage::outbox::OutboxLease::acquired_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::outbox::OutboxLease::expires_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::outbox::OutboxLease::id(&self) -> radroots_storage::outbox::LeaseId +pub const fn radroots_storage::outbox::OutboxLease::is_active_at(&self, u64) -> bool +pub fn radroots_storage::outbox::OutboxLease::new(radroots_storage::outbox::LeaseId, radroots_storage::outbox::LeaseOwner, u64, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::outbox::OutboxLease::owner(&self) -> &radroots_storage::outbox::LeaseOwner +pub struct radroots_storage::outbox::OutboxRecord +impl radroots_storage::outbox::OutboxRecord +pub fn radroots_storage::outbox::OutboxRecord::claim(&mut self, radroots_storage::outbox::OutboxLease) -> core::result::Result<(), radroots_storage::Error> +pub const fn radroots_storage::outbox::OutboxRecord::created_at_unix_ms(&self) -> u64 +pub fn radroots_storage::outbox::OutboxRecord::evidence(&self) -> &[radroots_storage::outbox::TargetDeliveryEvidence] +pub const fn radroots_storage::outbox::OutboxRecord::item_id(&self) -> radroots_storage::outbox::OutboxItemId +pub const fn radroots_storage::outbox::OutboxRecord::last_attempt(&self) -> core::option::Option<radroots_storage::outbox::DeliveryAttempt> +pub fn radroots_storage::outbox::OutboxRecord::latest_target_evidence(&self, &radroots_transport::target::TargetFingerprint) -> core::option::Option<&radroots_storage::outbox::TargetDeliveryEvidence> +pub const fn radroots_storage::outbox::OutboxRecord::lease(&self) -> core::option::Option<&radroots_storage::outbox::OutboxLease> +pub const fn radroots_storage::outbox::OutboxRecord::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId +pub const fn radroots_storage::outbox::OutboxRecord::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest +pub fn radroots_storage::outbox::OutboxRecord::record_attempt(&mut self, radroots_storage::outbox::DeliveryAttemptEvidence) -> core::result::Result<(), radroots_storage::Error> +pub fn radroots_storage::outbox::OutboxRecord::release(&mut self, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> core::result::Result<(), radroots_storage::Error> +pub const fn radroots_storage::outbox::OutboxRecord::request(&self) -> &radroots_transport::sink::DeliveryRequest +pub const fn radroots_storage::outbox::OutboxRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64> +pub const fn radroots_storage::outbox::OutboxRecord::revision(&self) -> radroots_storage::outbox::OutboxRevision +pub const fn radroots_storage::outbox::OutboxRecord::satisfaction(&self) -> radroots_storage::outbox::SatisfactionResult +pub const fn radroots_storage::outbox::OutboxRecord::stage(&self) -> radroots_storage::outbox::OutboxStage +pub const fn radroots_storage::outbox::OutboxRecord::updated_at_unix_ms(&self) -> u64 +pub struct radroots_storage::outbox::OutboxRevision(_) +impl radroots_storage::outbox::OutboxRevision +pub const radroots_storage::outbox::OutboxRevision::INITIAL: Self +pub const fn radroots_storage::outbox::OutboxRevision::get(self) -> u64 +pub const fn radroots_storage::outbox::OutboxRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::outbox::OutboxStatus +pub radroots_storage::outbox::OutboxStatus::exhausted: u64 +pub radroots_storage::outbox::OutboxStatus::leased: u64 +pub radroots_storage::outbox::OutboxStatus::pending: u64 +pub radroots_storage::outbox::OutboxStatus::retryable: u64 +pub radroots_storage::outbox::OutboxStatus::satisfied: u64 +impl radroots_storage::outbox::OutboxStatus +pub fn radroots_storage::outbox::OutboxStatus::total(self) -> core::option::Option<u64> +pub struct radroots_storage::outbox::TargetDeliveryEvidence +impl radroots_storage::outbox::TargetDeliveryEvidence +pub const fn radroots_storage::outbox::TargetDeliveryEvidence::attempt(&self) -> radroots_storage::outbox::DeliveryAttempt +pub const fn radroots_storage::outbox::TargetDeliveryEvidence::outcome(&self) -> &radroots_transport::outcome::DeliveryOutcome +pub const fn radroots_storage::outbox::TargetDeliveryEvidence::recorded_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::outbox::TargetDeliveryEvidence::target(&self) -> &radroots_transport::target::TargetFingerprint +pub const fn radroots_storage::outbox::TargetDeliveryEvidence::was_attempted(&self) -> bool +pub const radroots_storage::outbox::LEASE_OWNER_MAX_BYTES: usize +pub const radroots_storage::outbox::OUTBOX_CLAIM_LIMIT_MAX: u16 +pub trait radroots_storage::outbox::Outbox: core::marker::Send + core::marker::Sync +pub fn radroots_storage::outbox::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>> +pub fn radroots_storage::outbox::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>> +pub fn radroots_storage::outbox::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>> +pub fn radroots_storage::outbox::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::outbox::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::outbox::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>> +impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>> +pub mod radroots_storage::private_artifact +pub enum radroots_storage::private_artifact::DeletionReason +pub radroots_storage::private_artifact::DeletionReason::IntegrityFailure +pub radroots_storage::private_artifact::DeletionReason::KeyRevoked +pub radroots_storage::private_artifact::DeletionReason::OperatorRequested +pub radroots_storage::private_artifact::DeletionReason::RetentionExpired +pub radroots_storage::private_artifact::DeletionReason::UserRequested +pub enum radroots_storage::private_artifact::PrivateArtifactStage +pub radroots_storage::private_artifact::PrivateArtifactStage::Active +pub radroots_storage::private_artifact::PrivateArtifactStage::Expired +pub radroots_storage::private_artifact::PrivateArtifactStage::Tombstoned +pub struct radroots_storage::private_artifact::ArtifactCommitment(_) +impl radroots_storage::private_artifact::ArtifactCommitment +pub const fn radroots_storage::private_artifact::ArtifactCommitment::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::private_artifact::ArtifactCommitment::new([u8; 32]) -> Self +pub struct radroots_storage::private_artifact::ArtifactKind(_) +impl radroots_storage::private_artifact::ArtifactKind +pub fn radroots_storage::private_artifact::ArtifactKind::as_str(&self) -> &str +pub fn radroots_storage::private_artifact::ArtifactKind::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::private_artifact::ArtifactSchemaId(_) +impl radroots_storage::private_artifact::ArtifactSchemaId +pub fn radroots_storage::private_artifact::ArtifactSchemaId::as_str(&self) -> &str +pub fn radroots_storage::private_artifact::ArtifactSchemaId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::private_artifact::ArtifactTombstone +impl radroots_storage::private_artifact::ArtifactTombstone +pub const fn radroots_storage::private_artifact::ArtifactTombstone::commitment(self) -> radroots_storage::private_artifact::ArtifactCommitment +pub const fn radroots_storage::private_artifact::ArtifactTombstone::deleted_at_unix_ms(self) -> u64 +pub const fn radroots_storage::private_artifact::ArtifactTombstone::reason(self) -> radroots_storage::private_artifact::DeletionReason +pub struct radroots_storage::private_artifact::DurableSecretReference +impl radroots_storage::private_artifact::DurableSecretReference +pub const fn radroots_storage::private_artifact::DurableSecretReference::key_version(&self) -> u32 +pub fn radroots_storage::private_artifact::DurableSecretReference::new(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, u32) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::private_artifact::DurableSecretReference::opaque_reference(&self) -> &str +pub fn radroots_storage::private_artifact::DurableSecretReference::provider(&self) -> &str +impl core::fmt::Debug for radroots_storage::private_artifact::DurableSecretReference +pub fn radroots_storage::private_artifact::DurableSecretReference::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl serde_core::ser::Serialize for radroots_storage::private_artifact::DurableSecretReference +pub fn radroots_storage::private_artifact::DurableSecretReference::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer +impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::private_artifact::DurableSecretReference +pub fn radroots_storage::private_artifact::DurableSecretReference::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de> +pub struct radroots_storage::private_artifact::PrivateArtifactId(_) +impl radroots_storage::private_artifact::PrivateArtifactId +pub const fn radroots_storage::private_artifact::PrivateArtifactId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::private_artifact::PrivateArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::private_artifact::PrivateArtifactMetadata +impl radroots_storage::private_artifact::PrivateArtifactMetadata +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::artifact_id(&self) -> radroots_storage::private_artifact::PrivateArtifactId +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::commitment(&self) -> radroots_storage::private_artifact::ArtifactCommitment +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::created_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::kind(&self) -> &radroots_storage::private_artifact::ArtifactKind +pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::new(radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::ArtifactKind, radroots_storage::private_artifact::ArtifactSchemaId, radroots_storage::private_artifact::ArtifactCommitment, u64, radroots_storage::private_artifact::DurableSecretReference, radroots_storage::private_artifact::RetentionPolicy, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::protected_size_bytes(&self) -> u64 +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::retention(&self) -> radroots_storage::private_artifact::RetentionPolicy +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::revision(&self) -> radroots_storage::private_artifact::PrivateArtifactRevision +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::schema_id(&self) -> &radroots_storage::private_artifact::ArtifactSchemaId +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::secret_reference(&self) -> &radroots_storage::private_artifact::DurableSecretReference +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::stage(&self) -> radroots_storage::private_artifact::PrivateArtifactStage +pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone_record(&self) -> core::option::Option<radroots_storage::private_artifact::ArtifactTombstone> +pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::updated_at_unix_ms(&self) -> u64 +pub struct radroots_storage::private_artifact::PrivateArtifactRevision(_) +impl radroots_storage::private_artifact::PrivateArtifactRevision +pub const radroots_storage::private_artifact::PrivateArtifactRevision::INITIAL: Self +pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::get(self) -> u64 +pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::private_artifact::PrivateArtifactStatus +pub radroots_storage::private_artifact::PrivateArtifactStatus::active: u64 +pub radroots_storage::private_artifact::PrivateArtifactStatus::expired: u64 +pub radroots_storage::private_artifact::PrivateArtifactStatus::tombstoned: u64 +impl radroots_storage::private_artifact::PrivateArtifactStatus +pub fn radroots_storage::private_artifact::PrivateArtifactStatus::total(self) -> core::option::Option<u64> +pub struct radroots_storage::private_artifact::RetentionPolicy +impl radroots_storage::private_artifact::RetentionPolicy +pub const fn radroots_storage::private_artifact::RetentionPolicy::delete_not_before_unix_ms(self) -> core::option::Option<u64> +pub const fn radroots_storage::private_artifact::RetentionPolicy::expires_at_unix_ms(self) -> core::option::Option<u64> +pub const fn radroots_storage::private_artifact::RetentionPolicy::indefinite() -> Self +pub const fn radroots_storage::private_artifact::RetentionPolicy::is_expired_at(self, u64) -> bool +pub const fn radroots_storage::private_artifact::RetentionPolicy::new(core::option::Option<u64>, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::private_artifact::RetentionPolicy::permits_deletion_at(self, u64) -> bool +pub const radroots_storage::private_artifact::ARTIFACT_KIND_MAX_BYTES: usize +pub const radroots_storage::private_artifact::ARTIFACT_SCHEMA_MAX_BYTES: usize +pub const radroots_storage::private_artifact::EXPIRED_ARTIFACT_QUERY_LIMIT_MAX: u16 +pub const radroots_storage::private_artifact::SECRET_PROVIDER_MAX_BYTES: usize +pub const radroots_storage::private_artifact::SECRET_REFERENCE_MAX_BYTES: usize +pub trait radroots_storage::private_artifact::PrivateArtifactStore: core::marker::Send + core::marker::Sync +pub fn radroots_storage::private_artifact::PrivateArtifactStore::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::private_artifact::PrivateArtifactStore::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::private_artifact::PrivateArtifactStore::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::private_artifact::PrivateArtifactStore::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::private_artifact::PrivateArtifactStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>> +pub fn radroots_storage::private_artifact::PrivateArtifactStore::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>> +pub mod radroots_storage::projection +pub enum radroots_storage::projection::InvalidationReason +pub radroots_storage::projection::InvalidationReason::EventIndexManifestChanged +pub radroots_storage::projection::InvalidationReason::IntegrityFailure +pub radroots_storage::projection::InvalidationReason::OperatorRequested +pub radroots_storage::projection::InvalidationReason::ProjectionGenerationChanged +pub radroots_storage::projection::InvalidationReason::SourceGenerationChanged +pub enum radroots_storage::projection::ProjectionHealth +pub radroots_storage::projection::ProjectionHealth::Failed +pub radroots_storage::projection::ProjectionHealth::Invalidated +pub radroots_storage::projection::ProjectionHealth::Ready +pub radroots_storage::projection::ProjectionHealth::Rebuilding +pub enum radroots_storage::projection::RebuildStage +pub radroots_storage::projection::RebuildStage::Completed +pub radroots_storage::projection::RebuildStage::Failed +pub radroots_storage::projection::RebuildStage::Requested +pub radroots_storage::projection::RebuildStage::Running +pub struct radroots_storage::projection::ArtifactDigest(_) +impl radroots_storage::projection::ArtifactDigest +pub const fn radroots_storage::projection::ArtifactDigest::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::projection::ArtifactDigest::new([u8; 32]) -> Self +pub struct radroots_storage::projection::EventIdRange +impl radroots_storage::projection::EventIdRange +pub const fn radroots_storage::projection::EventIdRange::first(&self) -> &radroots_event::id::EventId +pub const fn radroots_storage::projection::EventIdRange::last(&self) -> &radroots_event::id::EventId +pub fn radroots_storage::projection::EventIdRange::new(radroots_event::id::EventId, radroots_event::id::EventId) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::EventIndexCheckpoint +impl radroots_storage::projection::EventIndexCheckpoint +pub const fn radroots_storage::projection::EventIndexCheckpoint::generated_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::projection::EventIndexCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub fn radroots_storage::projection::EventIndexCheckpoint::new(radroots_storage::projection::ProjectionGeneration, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShardCheckpoint>) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::projection::EventIndexCheckpoint::shard(&self, &radroots_storage::projection::EventIndexShardId) -> core::option::Option<&radroots_storage::projection::EventIndexShardCheckpoint> +pub fn radroots_storage::projection::EventIndexCheckpoint::shards(&self) -> &[radroots_storage::projection::EventIndexShardCheckpoint] +pub struct radroots_storage::projection::EventIndexManifest +impl radroots_storage::projection::EventIndexManifest +pub const fn radroots_storage::projection::EventIndexManifest::first_published_at_unix_s(&self) -> u64 +pub const fn radroots_storage::projection::EventIndexManifest::generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub const fn radroots_storage::projection::EventIndexManifest::last_published_at_unix_s(&self) -> u64 +pub fn radroots_storage::projection::EventIndexManifest::new(radroots_storage::projection::ProjectionGeneration, u64, u32, u64, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShard>) -> core::result::Result<Self, radroots_storage::Error> +pub fn radroots_storage::projection::EventIndexManifest::shards(&self) -> &[radroots_storage::projection::EventIndexShard] +pub const fn radroots_storage::projection::EventIndexManifest::target_shard_size(&self) -> u32 +pub const fn radroots_storage::projection::EventIndexManifest::total_events(&self) -> u64 +pub struct radroots_storage::projection::EventIndexShard +impl radroots_storage::projection::EventIndexShard +pub fn radroots_storage::projection::EventIndexShard::artifact_path(&self) -> &str +pub const fn radroots_storage::projection::EventIndexShard::event_count(&self) -> u32 +pub const fn radroots_storage::projection::EventIndexShard::event_ids(&self) -> &radroots_storage::projection::EventIdRange +pub const fn radroots_storage::projection::EventIndexShard::first_published_at_unix_s(&self) -> u64 +pub const fn radroots_storage::projection::EventIndexShard::last_published_at_unix_s(&self) -> u64 +pub fn radroots_storage::projection::EventIndexShard::new(radroots_storage::projection::EventIndexShardId, impl core::convert::Into<alloc::string::String>, u32, radroots_storage::projection::EventIdRange, u64, u64, radroots_storage::projection::ArtifactDigest) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::EventIndexShard::sha256(&self) -> radroots_storage::projection::ArtifactDigest +pub const fn radroots_storage::projection::EventIndexShard::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId +pub struct radroots_storage::projection::EventIndexShardCheckpoint +impl radroots_storage::projection::EventIndexShardCheckpoint +pub fn radroots_storage::projection::EventIndexShardCheckpoint::cursor(&self) -> core::option::Option<&str> +pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_created_at_unix_s(&self) -> u64 +pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_event_id(&self) -> core::option::Option<&radroots_event::id::EventId> +pub fn radroots_storage::projection::EventIndexShardCheckpoint::new(radroots_storage::projection::EventIndexShardId, u64, core::option::Option<radroots_event::id::EventId>, core::option::Option<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::EventIndexShardCheckpoint::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId +pub struct radroots_storage::projection::EventIndexShardId(_) +impl radroots_storage::projection::EventIndexShardId +pub fn radroots_storage::projection::EventIndexShardId::as_str(&self) -> &str +pub fn radroots_storage::projection::EventIndexShardId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::ProjectionCheckpoint +impl radroots_storage::projection::ProjectionCheckpoint +pub fn radroots_storage::projection::ProjectionCheckpoint::advances(&self, &Self) -> bool +pub const fn radroots_storage::projection::ProjectionCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub fn radroots_storage::projection::ProjectionCheckpoint::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, core::option::Option<radroots_storage::event::EventPosition>, u64, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::ProjectionCheckpoint::projected_rows(&self) -> u64 +pub const fn radroots_storage::projection::ProjectionCheckpoint::projection_id(&self) -> &radroots_storage::projection::ProjectionId +pub const fn radroots_storage::projection::ProjectionCheckpoint::source_position(&self) -> core::option::Option<radroots_storage::event::EventPosition> +pub const fn radroots_storage::projection::ProjectionCheckpoint::updated_at_unix_ms(&self) -> u64 +pub struct radroots_storage::projection::ProjectionGeneration(_) +impl radroots_storage::projection::ProjectionGeneration +pub const fn radroots_storage::projection::ProjectionGeneration::as_bytes(&self) -> &[u8; 32] +pub const fn radroots_storage::projection::ProjectionGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::ProjectionId(_) +impl radroots_storage::projection::ProjectionId +pub fn radroots_storage::projection::ProjectionId::as_str(&self) -> &str +pub fn radroots_storage::projection::ProjectionId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::ProjectionInvalidation +impl radroots_storage::projection::ProjectionInvalidation +pub const fn radroots_storage::projection::ProjectionInvalidation::invalid_generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub const fn radroots_storage::projection::ProjectionInvalidation::invalidated_at_unix_ms(&self) -> u64 +pub fn radroots_storage::projection::ProjectionInvalidation::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::InvalidationReason, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::ProjectionInvalidation::projection_id(&self) -> &radroots_storage::projection::ProjectionId +pub const fn radroots_storage::projection::ProjectionInvalidation::reason(&self) -> radroots_storage::projection::InvalidationReason +pub const fn radroots_storage::projection::ProjectionInvalidation::replacement_generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub struct radroots_storage::projection::ProjectionRevision(_) +impl radroots_storage::projection::ProjectionRevision +pub const radroots_storage::projection::ProjectionRevision::INITIAL: Self +pub const fn radroots_storage::projection::ProjectionRevision::get(self) -> u64 +pub const fn radroots_storage::projection::ProjectionRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::ProjectionStatus +impl radroots_storage::projection::ProjectionStatus +pub const fn radroots_storage::projection::ProjectionStatus::active_rebuild(&self) -> core::option::Option<radroots_storage::projection::RebuildTicketId> +pub const fn radroots_storage::projection::ProjectionStatus::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint> +pub const fn radroots_storage::projection::ProjectionStatus::generation(&self) -> radroots_storage::projection::ProjectionGeneration +pub const fn radroots_storage::projection::ProjectionStatus::health(&self) -> radroots_storage::projection::ProjectionHealth +pub fn radroots_storage::projection::ProjectionStatus::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionHealth, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>, core::option::Option<radroots_storage::projection::RebuildTicketId>) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::ProjectionStatus::projection_id(&self) -> &radroots_storage::projection::ProjectionId +pub struct radroots_storage::projection::RebuildTicket +impl radroots_storage::projection::RebuildTicket +pub const fn radroots_storage::projection::RebuildTicket::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint> +pub const fn radroots_storage::projection::RebuildTicket::invalidation(&self) -> &radroots_storage::projection::ProjectionInvalidation +pub fn radroots_storage::projection::RebuildTicket::requested(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionInvalidation) -> Self +pub const fn radroots_storage::projection::RebuildTicket::requested_at_unix_ms(&self) -> u64 +pub const fn radroots_storage::projection::RebuildTicket::revision(&self) -> radroots_storage::projection::ProjectionRevision +pub const fn radroots_storage::projection::RebuildTicket::stage(&self) -> radroots_storage::projection::RebuildStage +pub const fn radroots_storage::projection::RebuildTicket::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId +pub fn radroots_storage::projection::RebuildTicket::transition(&self, radroots_storage::projection::RebuildTransition) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::projection::RebuildTicket::updated_at_unix_ms(&self) -> u64 +pub struct radroots_storage::projection::RebuildTicketId(_) +impl radroots_storage::projection::RebuildTicketId +pub const fn radroots_storage::projection::RebuildTicketId::as_bytes(&self) -> &[u8; 16] +pub const fn radroots_storage::projection::RebuildTicketId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error> +pub struct radroots_storage::projection::RebuildTransition +impl radroots_storage::projection::RebuildTransition +pub const fn radroots_storage::projection::RebuildTransition::checkpoint(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self +pub const fn radroots_storage::projection::RebuildTransition::complete(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self +pub const fn radroots_storage::projection::RebuildTransition::fail(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64) -> Self +pub const fn radroots_storage::projection::RebuildTransition::start(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64) -> Self +pub const fn radroots_storage::projection::RebuildTransition::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId +pub const radroots_storage::projection::EVENT_INDEX_ARTIFACT_PATH_MAX_BYTES: usize +pub const radroots_storage::projection::EVENT_INDEX_CURSOR_MAX_BYTES: usize +pub const radroots_storage::projection::EVENT_INDEX_SHARDS_MAX: usize +pub const radroots_storage::projection::EVENT_INDEX_SHARD_ID_MAX_BYTES: usize +pub const radroots_storage::projection::PROJECTION_ID_MAX_BYTES: usize +pub trait radroots_storage::projection::ProjectionStore: core::marker::Send + core::marker::Sync +pub fn radroots_storage::projection::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>> +pub fn radroots_storage::projection::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub mod radroots_storage::status +pub enum radroots_storage::status::EventStoreHealth +pub radroots_storage::status::EventStoreHealth::Available +pub radroots_storage::status::EventStoreHealth::Degraded +pub radroots_storage::status::EventStoreHealth::Unavailable +pub enum radroots_storage::status::EventStoreMode +pub radroots_storage::status::EventStoreMode::ReadOnly +pub radroots_storage::status::EventStoreMode::ReadWrite +pub enum radroots_storage::status::IntegrityHealth +pub radroots_storage::status::IntegrityHealth::Corrupt +pub radroots_storage::status::IntegrityHealth::Degraded +pub radroots_storage::status::IntegrityHealth::Healthy +pub radroots_storage::status::IntegrityHealth::Unknown +pub enum radroots_storage::status::ShutdownState +pub radroots_storage::status::ShutdownState::Closed +pub radroots_storage::status::ShutdownState::Closing +pub radroots_storage::status::ShutdownState::Open +pub enum radroots_storage::status::StorageBackend +pub radroots_storage::status::StorageBackend::Memory +pub radroots_storage::status::StorageBackend::Sqlite +pub enum radroots_storage::status::StorageOpenMode +pub radroots_storage::status::StorageOpenMode::Create +pub radroots_storage::status::StorageOpenMode::ReadOnly +pub radroots_storage::status::StorageOpenMode::ReadWriteExisting +pub enum radroots_storage::status::WriterPolicy +pub radroots_storage::status::WriterPolicy::AdvisoryProcessLock +pub radroots_storage::status::WriterPolicy::NoWriter +pub struct radroots_storage::status::EventStoreStatus +impl radroots_storage::status::EventStoreStatus +pub const fn radroots_storage::status::EventStoreStatus::generation(&self) -> radroots_storage::event::SourceGeneration +pub const fn radroots_storage::status::EventStoreStatus::health(&self) -> radroots_storage::status::EventStoreHealth +pub const fn radroots_storage::status::EventStoreStatus::mode(&self) -> radroots_storage::status::EventStoreMode +pub const fn radroots_storage::status::EventStoreStatus::new(radroots_storage::event::SourceGeneration, radroots_storage::status::EventStoreMode, radroots_storage::status::EventStoreHealth, u64, u64, u64) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::status::EventStoreStatus::raw_events(&self) -> u64 +pub const fn radroots_storage::status::EventStoreStatus::verified_events(&self) -> u64 +pub const fn radroots_storage::status::EventStoreStatus::visible_events(&self) -> u64 +pub struct radroots_storage::status::IntegrityStatus +impl radroots_storage::status::IntegrityStatus +pub const fn radroots_storage::status::IntegrityStatus::checked_at_unix_ms(self) -> core::option::Option<u64> +pub const fn radroots_storage::status::IntegrityStatus::failed_members(self) -> u32 +pub const fn radroots_storage::status::IntegrityStatus::health(self) -> radroots_storage::status::IntegrityHealth +pub fn radroots_storage::status::IntegrityStatus::new(radroots_storage::status::IntegrityHealth, core::option::Option<u64>, u32, u32) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::status::IntegrityStatus::verified_members(self) -> u32 +pub struct radroots_storage::status::StorageStatus +impl radroots_storage::status::StorageStatus +pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend +pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32 +pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus +pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode +pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState +pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool +pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy +#[non_exhaustive] pub enum radroots_storage::Error +pub radroots_storage::Error::AdmissionEventMismatch +pub radroots_storage::Error::AdmissionRegression +pub radroots_storage::Error::AtomicCommitConflict +pub radroots_storage::Error::AtomicCommitFailed +pub radroots_storage::Error::AtomicWorkflowMismatch +pub radroots_storage::Error::BackendUnavailable +pub radroots_storage::Error::BackupManifestPlanMismatch +pub radroots_storage::Error::BackupSecretPolicyViolation +pub radroots_storage::Error::CorruptJournalRecord +pub radroots_storage::Error::CorruptOutboxRecord +pub radroots_storage::Error::CorruptPrivateArtifactMetadata +pub radroots_storage::Error::CorruptProjectionRecord +pub radroots_storage::Error::CorruptReliabilityOperation +pub radroots_storage::Error::CorruptStoredEvent +pub radroots_storage::Error::CursorGenerationMismatch +pub radroots_storage::Error::DuplicateBackupMember +pub radroots_storage::Error::DuplicateEventIndexShard +pub radroots_storage::Error::DuplicateEventQueryId +pub radroots_storage::Error::EmptyEventQueryIds +pub radroots_storage::Error::EventConflict +pub radroots_storage::Error::EventNotFound +pub radroots_storage::Error::EventPageLimitExceeded +pub radroots_storage::Error::IdempotencyConflict +pub radroots_storage::Error::InvalidAtomicCommitId +pub radroots_storage::Error::InvalidAtomicCommitTimestamp +pub radroots_storage::Error::InvalidBackupId +pub radroots_storage::Error::InvalidBackupManifest +pub radroots_storage::Error::InvalidBackupMemberLength +pub radroots_storage::Error::InvalidBackupMemberPath +pub radroots_storage::Error::InvalidBackupTimestamp +pub radroots_storage::Error::InvalidBackupTransition +pub radroots_storage::Error::InvalidBackupVersion +pub radroots_storage::Error::InvalidDeliveryAttempt +pub radroots_storage::Error::InvalidDeliveryEvidence +pub radroots_storage::Error::InvalidEventIndexArtifactPath +pub radroots_storage::Error::InvalidEventIndexCheckpoint +pub radroots_storage::Error::InvalidEventIndexCursor +pub radroots_storage::Error::InvalidEventIndexManifest +pub radroots_storage::Error::InvalidEventIndexRange +pub radroots_storage::Error::InvalidEventIndexShardCount +pub radroots_storage::Error::InvalidEventIndexShardId +pub radroots_storage::Error::InvalidEventIndexTimestamp +pub radroots_storage::Error::InvalidEventQueryLimit +pub radroots_storage::Error::InvalidEventSequence +pub radroots_storage::Error::InvalidExpiredArtifactQueryLimit +pub radroots_storage::Error::InvalidIdempotencyKey +pub radroots_storage::Error::InvalidIntegrityStatus +pub radroots_storage::Error::InvalidJournalQueryLimit +pub radroots_storage::Error::InvalidJournalRevision +pub radroots_storage::Error::InvalidJournalTransition +pub radroots_storage::Error::InvalidOperationInstanceId +pub radroots_storage::Error::InvalidOperationTimestamp +pub radroots_storage::Error::InvalidOutboxClaimLimit +pub radroots_storage::Error::InvalidOutboxItemId +pub radroots_storage::Error::InvalidOutboxLease +pub radroots_storage::Error::InvalidOutboxLeaseOwner +pub radroots_storage::Error::InvalidOutboxRevision +pub radroots_storage::Error::InvalidOutboxTimestamp +pub radroots_storage::Error::InvalidPrivateArtifactId +pub radroots_storage::Error::InvalidPrivateArtifactKind +pub radroots_storage::Error::InvalidPrivateArtifactMetadata +pub radroots_storage::Error::InvalidPrivateArtifactRetention +pub radroots_storage::Error::InvalidPrivateArtifactRevision +pub radroots_storage::Error::InvalidPrivateArtifactSchema +pub radroots_storage::Error::InvalidPrivateArtifactSecretReference +pub radroots_storage::Error::InvalidPrivateArtifactTimestamp +pub radroots_storage::Error::InvalidProjectionGeneration +pub radroots_storage::Error::InvalidProjectionId +pub radroots_storage::Error::InvalidProjectionInvalidation +pub radroots_storage::Error::InvalidProjectionRevision +pub radroots_storage::Error::InvalidProjectionTimestamp +pub radroots_storage::Error::InvalidRebuildTicketId +pub radroots_storage::Error::InvalidRebuildTransition +pub radroots_storage::Error::InvalidRecoveryAttempt +pub radroots_storage::Error::InvalidRecoveryDeadline +pub radroots_storage::Error::InvalidReliabilityRevision +pub radroots_storage::Error::InvalidRestoreTimestamp +pub radroots_storage::Error::InvalidRestoreTransition +pub radroots_storage::Error::InvalidSourceGeneration +pub radroots_storage::Error::InvalidStorageStatus +pub radroots_storage::Error::JournalOperationCommitted +pub radroots_storage::Error::JournalRevisionConflict +pub radroots_storage::Error::OperationIdentityMismatch +pub radroots_storage::Error::OperationNotFound +pub radroots_storage::Error::OutboxItemNotFound +pub radroots_storage::Error::OutboxItemNotReady +pub radroots_storage::Error::OutboxItemTerminal +pub radroots_storage::Error::OutboxLeaseConflict +pub radroots_storage::Error::OutboxLeaseExpired +pub radroots_storage::Error::OutboxPlanConflict +pub radroots_storage::Error::OutboxRevisionConflict +pub radroots_storage::Error::PrivateArtifactConflict +pub radroots_storage::Error::PrivateArtifactNotExpired +pub radroots_storage::Error::PrivateArtifactNotFound +pub radroots_storage::Error::PrivateArtifactRetentionActive +pub radroots_storage::Error::PrivateArtifactRevisionConflict +pub radroots_storage::Error::PrivateArtifactTombstoned +pub radroots_storage::Error::ProjectionCheckpointMismatch +pub radroots_storage::Error::ProjectionCheckpointRegression +pub radroots_storage::Error::ProjectionRevisionConflict +pub radroots_storage::Error::RebuildTicketTerminal +pub radroots_storage::Error::ReliabilityOperationTerminal +pub radroots_storage::Error::ReliabilityRevisionConflict +pub radroots_storage::Error::RestoreMemberVerificationFailed +pub radroots_storage::Error::SourceGenerationChanged +pub radroots_storage::Error::TooManyEventQueryIds +impl core::error::Error for radroots_storage::Error +impl core::fmt::Display for radroots_storage::Error +pub fn radroots_storage::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct radroots_storage::StorageStatus +impl radroots_storage::status::StorageStatus +pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend +pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32 +pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus +pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error> +pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode +pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState +pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool +pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy +pub trait radroots_storage::BackupSource: core::marker::Send + core::marker::Sync +pub fn radroots_storage::BackupSource::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::BackupSource::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>> +pub trait radroots_storage::EventStore: core::marker::Send + core::marker::Sync +pub fn radroots_storage::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>> +pub fn radroots_storage::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>> +pub fn radroots_storage::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>> +pub fn radroots_storage::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>> +pub fn radroots_storage::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>> +pub fn radroots_storage::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>> +impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>> +pub trait radroots_storage::Journal: core::marker::Send + core::marker::Sync +pub fn radroots_storage::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>> +pub fn radroots_storage::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>> +impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>> +pub trait radroots_storage::Outbox: core::marker::Send + core::marker::Sync +pub fn radroots_storage::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>> +pub fn radroots_storage::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>> +pub fn radroots_storage::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>> +pub fn radroots_storage::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>> +impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>> +pub trait radroots_storage::ProjectionStore: core::marker::Send + core::marker::Sync +pub fn radroots_storage::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>> +pub fn radroots_storage::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage +pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>> +pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>> +pub trait radroots_storage::Storage: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage +impl<T> radroots_storage::Storage for T where T: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage