Skip to content
Snippets Groups Projects
Commit 879cdfdd authored by Éloïs's avatar Éloïs
Browse files

[feat] conf: add method default_sync_module() & use it for sync command

parent fbd9381e
Branches
Tags
1 merge request!151Resolve "Allow several network modules"
......@@ -221,20 +221,26 @@ pub enum DuRsGlobalConf {
}
impl DursGlobalConfTrait for DuRsGlobalConf {
/// Get currency
fn currency(&self) -> CurrencyName {
match *self {
DuRsGlobalConf::V1(ref conf_v1) => conf_v1.currency.clone(),
DuRsGlobalConf::V2(ref conf_v2) => conf_v2.currency.clone(),
}
}
/// Get node id
fn my_node_id(&self) -> u32 {
match *self {
DuRsGlobalConf::V1(ref conf_v1) => conf_v1.my_node_id,
DuRsGlobalConf::V2(ref conf_v2) => conf_v2.my_node_id,
}
}
fn default_sync_module(&self) -> ModuleName {
match *self {
DuRsGlobalConf::V1(_) => {
fatal_error!("Feature default_sync_module not exist in durs conf v1 !")
}
DuRsGlobalConf::V2(ref conf_v2) => conf_v2.default_sync_module.clone(),
}
}
}
impl Default for DuRsConf {
......
......@@ -347,6 +347,14 @@ impl DursCore<DuRsConf> {
if enabled {
self.network_modules_count += 1;
if let Some(ServerMode::_Sync(ref network_sync)) = self.server_command {
if NM::name().0
== self
.soft_meta_datas
.conf
.get_global_conf()
.default_sync_module()
.0
{
// Start module in a new thread
let router_sender = self
.router_sender
......@@ -397,6 +405,10 @@ impl DursCore<DuRsConf> {
self.modules_names.push(NM::name());
info!("Success to load {} module.", NM::name().to_string());
Ok(())
} else {
debug!("Module '{}' not used for sync.", NM::name());
Ok(())
}
} else {
self.plug_::<NM>(true)
}
......@@ -453,11 +465,8 @@ impl DursCore<DuRsConf> {
required_keys,
module_conf,
router_sender_clone,
false,
)
.unwrap_or_else(|_| {
fatal_error!("Fail to load module '{}' !", M::name())
});
.unwrap_or_else(|e| fatal_error!("Module '{}': {}", M::name(), e));
})
.map_err(|e| PlugModuleError::FailSpawnModuleThread {
module_name: M::name(),
......
......@@ -108,6 +108,8 @@ pub trait DursGlobalConfTrait:
fn currency(&self) -> CurrencyName;
/// Get node id
fn my_node_id(&self) -> u32;
/// Get default sync module
fn default_sync_module(&self) -> ModuleName;
}
/// Durs configuration trait
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment