liminal-server 0.24.9

Standalone server for the liminal messaging bus
Documentation
//! Replacement observations add exact lifecycle totals without counting a dial as an open.
use super::{ServerError, failure};
use crate::link::LinkLifeCounters;
pub(super) fn lifecycle(
    current: LinkLifeCounters,
    previous: LinkLifeCounters,
) -> Result<LinkLifeCounters, ServerError> {
    let add = |current: u64, previous: u64| {
        current
            .checked_add(previous)
            .ok_or_else(|| failure("configured link lifecycle counter overflow"))
    };
    Ok(LinkLifeCounters {
        links_opened: add(current.links_opened, previous.links_opened)?,
        links_closed_by_peer_gone: add(
            current.links_closed_by_peer_gone,
            previous.links_closed_by_peer_gone,
        )?,
        links_closed_by_revoked: add(
            current.links_closed_by_revoked,
            previous.links_closed_by_revoked,
        )?,
        links_closed_by_refused: add(
            current.links_closed_by_refused,
            previous.links_closed_by_refused,
        )?,
        links_closed_by_replaced: add(
            current.links_closed_by_replaced,
            previous.links_closed_by_replaced,
        )?,
        links_closed_by_shutdown: add(
            current.links_closed_by_shutdown,
            previous.links_closed_by_shutdown,
        )?,
    })
}