canic_core/ops/storage/
mod.rs

1pub mod cycles;
2pub mod directory;
3pub mod env;
4pub mod memory;
5pub mod pool;
6pub mod scaling;
7pub mod sharding;
8pub mod state;
9pub mod topology;
10
11pub use crate::model::memory::{CanisterEntry, CanisterSummary};
12
13use crate::ops::storage::env::EnvOpsError;
14use crate::{
15    Error, ThisError,
16    ops::{
17        OpsError,
18        storage::{
19            directory::{AppDirectoryOpsError, DirectoryView, SubnetDirectoryOpsError},
20            env::EnvData,
21            memory::MemoryRegistryOpsError,
22            sharding::ShardingRegistryOpsError,
23            state::AppStateOpsError,
24            topology::TopologyOpsError,
25        },
26    },
27};
28use candid::CandidType;
29use serde::Deserialize;
30
31///
32/// StorageOpsError
33///
34
35#[derive(Debug, ThisError)]
36pub enum StorageOpsError {
37    #[error(transparent)]
38    AppDirectoryOpsError(#[from] AppDirectoryOpsError),
39
40    #[error(transparent)]
41    AppStateOpsError(#[from] AppStateOpsError),
42
43    #[error(transparent)]
44    EnvOpsError(#[from] EnvOpsError),
45
46    #[error(transparent)]
47    MemoryRegistryOpsError(#[from] MemoryRegistryOpsError),
48
49    #[error(transparent)]
50    ShardingRegistryOpsError(#[from] ShardingRegistryOpsError),
51
52    #[error(transparent)]
53    SubnetDirectoryOpsError(#[from] SubnetDirectoryOpsError),
54
55    #[error(transparent)]
56    TopologyOpsError(#[from] TopologyOpsError),
57}
58
59impl From<StorageOpsError> for Error {
60    fn from(err: StorageOpsError) -> Self {
61        OpsError::StorageOpsError(err).into()
62    }
63}
64
65///
66/// CanisterInitPayload
67///
68
69#[derive(CandidType, Debug, Deserialize)]
70pub struct CanisterInitPayload {
71    pub env: EnvData,
72    pub app_directory: DirectoryView,
73    pub subnet_directory: DirectoryView,
74}
75
76impl CanisterInitPayload {
77    #[must_use]
78    pub const fn new(
79        env: EnvData,
80        app_directory: DirectoryView,
81        subnet_directory: DirectoryView,
82    ) -> Self {
83        Self {
84            env,
85            app_directory,
86            subnet_directory,
87        }
88    }
89}