use super::{
packet_queues::AuthoredPacketQueueConfig,
sphinx::{KxSecret, MAX_HOPS},
};
use std::time::Duration;
#[derive(Clone, Debug)]
pub struct SessionConfig {
pub authored_packet_queue: AuthoredPacketQueueConfig,
pub mean_authored_packet_period: Duration,
}
#[derive(Clone, Debug)]
pub struct Config {
pub log_target: &'static str,
pub num_gateway_mixnodes: u32,
pub session_0_kx_secret: Option<KxSecret>,
pub mixnode_session: SessionConfig,
pub non_mixnode_session: Option<SessionConfig>,
pub forward_packet_queue_capacity: usize,
pub mean_forwarding_delay: Duration,
pub per_hop_net_delay: Duration,
pub loop_cover_proportion: f64,
pub gen_cover_packets: bool,
pub num_hops: usize,
pub surb_keystore_capacity: usize,
pub max_incomplete_messages: usize,
pub max_incomplete_fragments: usize,
pub max_fragments_per_message: usize,
}
impl Default for Config {
fn default() -> Self {
Self {
log_target: "mixnet",
num_gateway_mixnodes: 3,
session_0_kx_secret: None,
mixnode_session: SessionConfig {
authored_packet_queue: AuthoredPacketQueueConfig {
capacity: 50,
multiple_messages: true,
},
mean_authored_packet_period: Duration::from_millis(100),
},
non_mixnode_session: Some(SessionConfig {
authored_packet_queue: AuthoredPacketQueueConfig {
capacity: 25,
multiple_messages: false,
},
mean_authored_packet_period: Duration::from_millis(1000),
}),
forward_packet_queue_capacity: 300,
mean_forwarding_delay: Duration::from_secs(1),
per_hop_net_delay: Duration::from_millis(300),
loop_cover_proportion: 0.25,
gen_cover_packets: true,
num_hops: MAX_HOPS,
surb_keystore_capacity: 200,
max_incomplete_messages: 2000,
max_incomplete_fragments: 2000,
max_fragments_per_message: 25,
}
}
}