use std::net::IpAddr;
use std::time::Duration;
use super::*;
use crate::mdns::*;
use crate::network_type::NetworkType;
use crate::url::*;
pub(crate) const DEFAULT_CHECK_INTERVAL: Duration = Duration::from_millis(200);
pub(crate) const DEFAULT_KEEPALIVE_INTERVAL: Duration = Duration::from_secs(2);
pub(crate) const DEFAULT_DISCONNECTED_TIMEOUT: Duration = Duration::from_secs(5);
pub(crate) const DEFAULT_FAILED_TIMEOUT: Duration = Duration::from_secs(25);
pub(crate) const DEFAULT_HOST_ACCEPTANCE_MIN_WAIT: Duration = Duration::from_secs(0);
pub(crate) const DEFAULT_SRFLX_ACCEPTANCE_MIN_WAIT: Duration = Duration::from_millis(500);
pub(crate) const DEFAULT_PRFLX_ACCEPTANCE_MIN_WAIT: Duration = Duration::from_millis(1000);
pub(crate) const DEFAULT_RELAY_ACCEPTANCE_MIN_WAIT: Duration = Duration::from_millis(2000);
pub(crate) const DEFAULT_MAX_BINDING_REQUESTS: u16 = 7;
pub(crate) const MAX_BUFFER_SIZE: usize = 1000 * 1000;
pub(crate) const MAX_BINDING_REQUEST_TIMEOUT: Duration = Duration::from_millis(4000);
pub(crate) fn default_candidate_types() -> Vec<CandidateType> {
vec![
CandidateType::Host,
CandidateType::ServerReflexive,
CandidateType::Relay,
]
}
#[derive(Default)]
pub struct AgentConfig {
pub urls: Vec<Url>,
pub local_ufrag: String,
pub local_pwd: String,
pub multicast_dns_query_timeout: Option<Duration>,
pub multicast_dns_mode: MulticastDnsMode,
pub multicast_dns_local_name: String,
pub multicast_dns_local_ip: Option<IpAddr>,
pub disconnected_timeout: Option<Duration>,
pub failed_timeout: Option<Duration>,
pub keepalive_interval: Option<Duration>,
pub candidate_types: Vec<CandidateType>,
pub network_types: Vec<NetworkType>,
pub check_interval: Duration,
pub max_binding_requests: Option<u16>,
pub is_controlling: bool,
pub lite: bool,
pub host_acceptance_min_wait: Option<Duration>,
pub srflx_acceptance_min_wait: Option<Duration>,
pub prflx_acceptance_min_wait: Option<Duration>,
pub relay_acceptance_min_wait: Option<Duration>,
pub insecure_skip_verify: bool,
}