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