#[derive(Debug, Clone)]
#[derive(Deserialize, Serialize)]
#[serde(default)]
pub struct LogPoolsConfiguration
{
poolSetsFolderName: String,
logPoolConfigurations: HashMap<String, LogPoolConfiguration>
}
impl Default for LogPoolsConfiguration
{
#[inline(always)]
fn default() -> Self
{
Self
{
poolSetsFolderName: "log".to_string(),
logPoolConfigurations: HashMap::new(),
}
}
}
impl LogPoolsConfiguration
{
pub fn open(&self, poolsFolderPath: &Path) -> HashMap<String, LogPool>
{
let logPoolSetsFolderPath = poolsFolderPath.join(&self.poolSetsFolderName);
if unlikely(!logPoolSetsFolderPath.exists())
{
return HashMap::new()
}
assert!(logPoolSetsFolderPath.is_dir(), "logPoolSetsFolderPath '{:?}' is not a folder", logPoolSetsFolderPath);
self.logPoolConfigurations.iter().map(|(fileName, logPoolConfiguration)| (fileName.to_string(), logPoolConfiguration.openOrCreate(&logPoolSetsFolderPath, fileName)) ).collect()
}
}