pub(crate) use imp::Options;
#[cfg(not(wasm_browser))]
mod imp {
use std::collections::BTreeSet;
use crate::net_report::{QuicConfig, probes::Probe};
#[derive(Debug, Clone)]
pub(crate) struct Options {
pub(crate) quic_config: Option<QuicConfig>,
pub(crate) tls_config: rustls::ClientConfig,
}
impl Options {
pub(crate) fn new(tls_config: rustls::ClientConfig) -> Self {
Self {
quic_config: None,
tls_config,
}
}
pub(crate) fn quic_config(mut self, quic_config: Option<QuicConfig>) -> Self {
self.quic_config = quic_config;
self
}
pub(crate) fn as_protocols(&self) -> BTreeSet<Probe> {
let mut protocols = BTreeSet::new();
if let Some(ref quic) = self.quic_config {
if quic.ipv4 {
protocols.insert(Probe::QadIpv4);
}
if quic.ipv6 {
protocols.insert(Probe::QadIpv6);
}
}
protocols.insert(Probe::Https);
protocols
}
}
}
#[cfg(wasm_browser)]
mod imp {
use std::collections::BTreeSet;
use crate::net_report::Probe;
#[derive(Debug, Clone)]
pub(crate) struct Options {
pub(crate) https: bool,
}
impl Default for Options {
fn default() -> Self {
Self { https: true }
}
}
impl Options {
pub(crate) fn disabled() -> Self {
Self { https: false }
}
pub(crate) fn https(mut self, enable: bool) -> Self {
self.https = enable;
self
}
pub(crate) fn as_protocols(&self) -> BTreeSet<Probe> {
let mut protocols = BTreeSet::new();
if self.https {
protocols.insert(Probe::Https);
}
protocols
}
}
}