use crate::{Durability, HistoryKind, QoSPolicy, Reliability, Ternary};
pub fn reliability_from_ternary(t: Ternary) -> Reliability {
match t {
Ternary::Pos => Reliability::Reliable,
Ternary::Zero | Ternary::Neg => Reliability::BestEffort,
}
}
pub fn durability_from_ternary(t: Ternary) -> Durability {
match t {
Ternary::Neg => Durability::TransientLocal,
Ternary::Zero => Durability::Volatile,
Ternary::Pos => Durability::Persistent,
}
}
pub fn qos_from_ternary(t: Ternary, depth: usize) -> QoSPolicy {
let depth = depth.max(1);
QoSPolicy {
reliability: reliability_from_ternary(t),
durability: durability_from_ternary(t),
history: HistoryKind::KeepLast(depth),
depth,
}
}
pub fn default_qos(depth: usize) -> QoSPolicy {
qos_from_ternary(Ternary::Zero, depth)
}