use serde::{Deserialize, Serialize};
use crate::vnext::{DynamicStorageProfile, ResolvedValueRole};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case", deny_unknown_fields)]
pub enum ProviderCheckpointStateLayout {
ContiguousBoundaryValue,
TokenMajorPrefix,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ProviderCheckpointStatePort {
role: ResolvedValueRole,
ordinal: u32,
storage_profile: DynamicStorageProfile,
layout: ProviderCheckpointStateLayout,
}
impl ProviderCheckpointStatePort {
pub const fn new(
role: ResolvedValueRole,
ordinal: u32,
storage_profile: DynamicStorageProfile,
layout: ProviderCheckpointStateLayout,
) -> Self {
Self {
role,
ordinal,
storage_profile,
layout,
}
}
pub const fn role(&self) -> ResolvedValueRole {
self.role
}
pub const fn ordinal(&self) -> u32 {
self.ordinal
}
pub const fn storage_profile(&self) -> DynamicStorageProfile {
self.storage_profile
}
pub const fn layout(&self) -> ProviderCheckpointStateLayout {
self.layout
}
pub(super) fn key(&self) -> (ResolvedValueRole, u32, DynamicStorageProfile) {
(self.role, self.ordinal, self.storage_profile)
}
}