use crate::core::MessageId;
use crate::integrity::IntegrityConfig;
#[cfg(feature = "dynamic-recovery")]
use crate::reliability::DynamicRecoveryConfig;
pub(crate) const MAX_WIRE_BYTES: usize = 128;
pub(crate) const MAX_INGRESS_BYTES: usize = MAX_WIRE_BYTES * MAX_EVENTS;
pub(crate) const MAX_MESSAGE_BYTES: usize = 256;
pub(crate) const MAX_EVENTS: usize = 16;
pub(crate) const MAX_MESSAGE_EVENTS: usize = 16;
pub(crate) const MAX_IN_FLIGHT_PACKETS: usize = 16;
pub(crate) const MAX_PENDING_ACKS: usize = 16;
pub(crate) const MAX_REASSEMBLY_MESSAGES: usize = 4;
pub(crate) const DEFAULT_FRAGMENT_BYTES: usize = 64;
pub(crate) const DEFAULT_MAX_RETRANSMIT_ATTEMPTS: u8 = 5;
pub(crate) const DEFAULT_RETRANSMIT_TIMEOUT_MS: u64 = 50;
pub(crate) const DEFAULT_REASSEMBLY_TIMEOUT_MS: u64 = 2_000;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct EngineConfig {
pub initial_message_id: MessageId,
pub fragment_bytes: usize,
pub max_retransmit_attempts: u8,
pub retransmit_timeout_ms: u64,
pub reassembly_timeout_ms: u64,
pub integrity: IntegrityConfig,
#[cfg(feature = "dynamic-recovery")]
pub dynamic_recovery: DynamicRecoveryConfig,
}
impl Default for EngineConfig {
fn default() -> Self {
Self {
initial_message_id: MessageId::ZERO,
fragment_bytes: DEFAULT_FRAGMENT_BYTES,
max_retransmit_attempts: DEFAULT_MAX_RETRANSMIT_ATTEMPTS,
retransmit_timeout_ms: DEFAULT_RETRANSMIT_TIMEOUT_MS,
reassembly_timeout_ms: DEFAULT_REASSEMBLY_TIMEOUT_MS,
integrity: IntegrityConfig::DEFAULT,
#[cfg(feature = "dynamic-recovery")]
dynamic_recovery: DynamicRecoveryConfig::default(),
}
}
}