canic_core/config/schema/
log.rs1use super::{ConfigSchemaError, Validate};
2use serde::{Deserialize, Serialize};
3
4mod defaults {
9 pub const fn max_entries() -> u64 {
10 10_000
11 }
12
13 pub const fn max_entry_bytes() -> u32 {
14 16_384
15 }
16}
17
18pub const MAX_LOG_ENTRIES: u64 = 100_000;
19
20#[derive(Clone, Debug, Deserialize, Serialize)]
25#[serde(deny_unknown_fields)]
26pub struct LogConfig {
27 #[serde(default = "defaults::max_entries")]
28 pub max_entries: u64,
29
30 #[serde(default = "defaults::max_entry_bytes")]
31 pub max_entry_bytes: u32,
32
33 #[serde(default)]
34 pub max_age_secs: Option<u64>,
35}
36
37impl Default for LogConfig {
38 fn default() -> Self {
39 Self {
40 max_entries: defaults::max_entries(),
41 max_entry_bytes: defaults::max_entry_bytes(),
42 max_age_secs: None,
43 }
44 }
45}
46
47impl Validate for LogConfig {
48 fn validate(&self) -> Result<(), ConfigSchemaError> {
49 if self.max_entries > MAX_LOG_ENTRIES {
50 return Err(ConfigSchemaError::ValidationError(format!(
51 "log.max_entries {} exceeds max {}",
52 self.max_entries, MAX_LOG_ENTRIES
53 )));
54 }
55
56 Ok(())
57 }
58}