1#![forbid(unsafe_code)]
6#![warn(missing_docs, rust_2018_idioms)]
7
8pub mod server;
9pub mod client;
10pub mod generator;
11
12pub use server::{
13 ServerConfig, LoggingSettings, ConnectionLogMode,
14 ConnectionLogEvents, ConnectionLogAnonymization, ConnectionLogRetention,
15 AuditSettings, AuditSinkConfig,
16};
17pub use client::{ClientConfig, ClientConfigBuilder};
18pub use generator::ConfigGenerator;
19
20use thiserror::Error;
21
22#[derive(Debug, Error)]
24pub enum ConfigError {
25 #[error("IO error: {0}")]
27 IoError(#[from] std::io::Error),
28
29 #[error("serialization error: {0}")]
31 SerializationError(String),
32
33 #[error("validation error: {0}")]
35 ValidationError(String),
36
37 #[error("missing required field: {0}")]
39 MissingField(String),
40}
41
42pub type Result<T> = std::result::Result<T, ConfigError>;
44
45impl From<toml::de::Error> for ConfigError {
46 fn from(err: toml::de::Error) -> Self {
47 ConfigError::SerializationError(err.to_string())
48 }
49}
50
51impl From<toml::ser::Error> for ConfigError {
52 fn from(err: toml::ser::Error) -> Self {
53 ConfigError::SerializationError(err.to_string())
54 }
55}