nodedb 0.4.0

Local-first, real-time, edge-to-cloud hybrid database for multi-modal workloads
Documentation
// SPDX-License-Identifier: BUSL-1.1

//! Descriptor-drain and CA-trust-change host-side effects.

use tracing::debug;

use nodedb_cluster::DescriptorId;
use nodedb_types::Hlc;

use super::audit::apply_ca_trust_change;
use super::types::MetadataCommitApplier;

impl MetadataCommitApplier {
    pub(super) fn apply_drain_start(
        &self,
        descriptor_id: &DescriptorId,
        up_to_version: u64,
        expires_at: Hlc,
    ) -> Result<(), crate::Error> {
        if let Some(weak) = self.shared.get()
            && let Some(shared) = weak.upgrade()
        {
            shared
                .lease_drain
                .install_start(descriptor_id.clone(), up_to_version, expires_at);
            debug!(
                descriptor = ?descriptor_id,
                up_to_version,
                "drain_start applied to host tracker"
            );
        }
        Ok(())
    }

    pub(super) fn apply_drain_end(&self, descriptor_id: &DescriptorId) -> Result<(), crate::Error> {
        if let Some(weak) = self.shared.get()
            && let Some(shared) = weak.upgrade()
        {
            shared.lease_drain.install_end(descriptor_id);
            debug!(
                descriptor = ?descriptor_id,
                "drain_end applied to host tracker"
            );
        }
        Ok(())
    }

    pub(super) fn apply_ca_trust(
        &self,
        add_ca_cert: Option<&[u8]>,
        remove_ca_fingerprint: Option<&[u8; 32]>,
        raft_index: u64,
    ) -> Result<(), crate::Error> {
        if let Some(weak) = self.shared.get()
            && let Some(shared) = weak.upgrade()
        {
            apply_ca_trust_change(&shared, add_ca_cert, remove_ca_fingerprint, raft_index);
        }
        Ok(())
    }
}