use std::time::Duration;
use surrealdb_cnf as cnf;
#[derive(Clone, Debug)]
pub(crate) struct ScriptConfig {
pub scripting_max_stack_size: usize,
pub scripting_max_memory_limit: usize,
pub scripting_max_time_limit: Duration,
}
impl Default for ScriptConfig {
fn default() -> Self {
Self {
scripting_max_stack_size: 256 * 1024,
scripting_max_memory_limit: 2 << 20,
scripting_max_time_limit: Duration::from_secs(5),
}
}
}
impl cnf::Config for ScriptConfig {
fn parse(&mut self, map: &cnf::ConfigMap) {
map.parse_key("scripting_max_stack_size", &mut self.scripting_max_stack_size)
.parse_key("scripting_max_memory_limit", &mut self.scripting_max_memory_limit)
.parse_key_with("scripting_max_time_limit", &mut self.scripting_max_time_limit, |x| {
x.parse().map(Duration::from_millis).ok()
});
}
}