canic_core/ops/placement/sharding/
mod.rs1pub mod assign;
2mod hrw;
3mod metrics;
4pub mod policy;
5
6pub use crate::ops::storage::sharding::ShardingRegistryOps;
7pub use metrics::{PoolMetrics, pool_metrics};
8pub use {assign::*, policy::*};
9
10use crate::{Error, ThisError, cdk::types::Principal, ops::storage::sharding::ShardEntry};
11
12#[derive(Debug, ThisError)]
18pub enum ShardingOpsError {
19 #[error("shard pool not found: {0}")]
20 PoolNotFound(String),
21
22 #[error("shard cap reached")]
23 ShardCapReached,
24
25 #[error("shard creation blocked: {0}")]
26 ShardCreationBlocked(String),
27
28 #[error("sharding disabled")]
29 ShardingDisabled,
30
31 #[error("tenant '{0}' not found")]
32 TenantNotFound(String),
33}
34
35impl From<ShardingOpsError> for Error {
36 fn from(err: ShardingOpsError) -> Self {
37 Self::OpsError(err.to_string())
38 }
39}
40
41pub type ShardingRegistryDto = Vec<(Principal, ShardEntry)>;