use crate::http::HttpClientCapabilityV1;
#[derive(Clone, Debug)]
pub struct Capabilities {
pub insecure_allow_all: bool,
pub http_client: HttpClientCapabilityV1,
pub threading: CapabilityThreadingV1,
}
impl Capabilities {
pub fn new() -> Self {
Self {
insecure_allow_all: false,
http_client: Default::default(),
threading: Default::default(),
}
}
pub fn update(&mut self, other: Capabilities) {
let Capabilities {
insecure_allow_all,
http_client,
threading,
} = other;
self.insecure_allow_all |= insecure_allow_all;
self.http_client.update(http_client);
self.threading.update(threading);
}
}
impl Default for Capabilities {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Default, Clone)]
pub struct CapabilityThreadingV1 {
pub max_threads: Option<usize>,
pub enable_asynchronous_threading: bool,
}
impl CapabilityThreadingV1 {
pub fn update(&mut self, other: CapabilityThreadingV1) {
let CapabilityThreadingV1 {
max_threads,
enable_asynchronous_threading,
} = other;
self.enable_asynchronous_threading |= enable_asynchronous_threading;
self.max_threads = max_threads.or(self.max_threads);
}
}