nnrp-core 1.0.0-preview.4.9

Canonical NNRP wire codecs, protocol validation, state machines, and preview3 core types.
Documentation
pub const CONTROL_CANCEL_ABORT: &str = "control.cancel_abort";
pub const CONTROL_SUPERSEDE: &str = "control.supersede";
pub const CONTROL_PRIORITY_UPDATE: &str = "control.priority_update";
pub const CONTROL_DEADLINE_EXPIRE: &str = "control.deadline_expire";
pub const CONTROL_PROGRESS_PARTIAL: &str = "control.progress_partial";
pub const CONTROL_CREDIT_BACKPRESSURE: &str = "control.credit_backpressure";
pub const CONTROL_CAPABILITY_COSTS: &str = "control.capability_costs";
pub const CONTROL_ROUTE_EXECUTION_HINT: &str = "control.route_execution_hint";
pub const CONTROL_TRACE_CONTEXT: &str = "control.trace_context";
pub const CONTROL_RESULT_DROP_REASON: &str = "control.result_drop_reason";
pub const CONTROL_DEGRADE_PROFILE: &str = "control.degrade_profile";
pub const CONTROL_BUDGET_UPDATE: &str = "control.budget_update";
pub const CONTROL_RECOVERABLE_ERROR: &str = "control.recoverable_error";
pub const CONTROL_RETRY_AFTER: &str = "control.retry_after";

pub const OBJECT_LIFECYCLE: &str = "object.lifecycle";
pub const OBJECT_DELTA: &str = "object.delta";
pub const OBJECT_COST: &str = "object.cost";
pub const OBJECT_OWNERSHIP: &str = "object.ownership";

pub const CACHE_REFERENCE: &str = "cache.reference";

pub const TRANSPORT_TCP: &str = "tcp";
pub const TRANSPORT_QUIC: &str = "quic";
pub const TRANSPORT_IPC: &str = "ipc";
pub const TRANSPORT_WEBSOCKET: &str = "websocket";

pub const PREVIEW4_CONTROL_CAPABILITY_TOKENS: &[&str] = &[
    CONTROL_CANCEL_ABORT,
    CONTROL_SUPERSEDE,
    CONTROL_PRIORITY_UPDATE,
    CONTROL_DEADLINE_EXPIRE,
    CONTROL_PROGRESS_PARTIAL,
    CONTROL_CREDIT_BACKPRESSURE,
    CONTROL_CAPABILITY_COSTS,
    CONTROL_ROUTE_EXECUTION_HINT,
    CONTROL_TRACE_CONTEXT,
    CONTROL_RESULT_DROP_REASON,
    CONTROL_DEGRADE_PROFILE,
    CONTROL_BUDGET_UPDATE,
    CONTROL_RECOVERABLE_ERROR,
    CONTROL_RETRY_AFTER,
];

pub const PREVIEW4_OBJECT_CAPABILITY_TOKENS: &[&str] = &[
    OBJECT_LIFECYCLE,
    OBJECT_DELTA,
    OBJECT_COST,
    OBJECT_OWNERSHIP,
    CACHE_REFERENCE,
];

pub const PREVIEW4_TRANSPORT_NAMES: &[&str] = &[
    TRANSPORT_TCP,
    TRANSPORT_QUIC,
    TRANSPORT_IPC,
    TRANSPORT_WEBSOCKET,
];

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn preview4_capability_tokens_match_public_catalog_names() {
        assert!(PREVIEW4_CONTROL_CAPABILITY_TOKENS.contains(&CONTROL_CANCEL_ABORT));
        assert!(PREVIEW4_CONTROL_CAPABILITY_TOKENS.contains(&CONTROL_RESULT_DROP_REASON));
        assert!(PREVIEW4_OBJECT_CAPABILITY_TOKENS.contains(&OBJECT_LIFECYCLE));
        assert!(PREVIEW4_OBJECT_CAPABILITY_TOKENS.contains(&CACHE_REFERENCE));
        assert!(!PREVIEW4_OBJECT_CAPABILITY_TOKENS.contains(&"control.cache_reference"));
    }

    #[test]
    fn preview4_transport_names_are_stable() {
        assert_eq!(
            PREVIEW4_TRANSPORT_NAMES,
            &["tcp", "quic", "ipc", "websocket"]
        );
    }
}