Network-specific nodes file (#2569)
* network-specific nodes.json * save nodes.json periodically * squash warnings
This commit is contained in:
committed by
Gav Wood
parent
5e24a35272
commit
ea68546616
@@ -31,7 +31,7 @@ use ethcore_rpc::NetworkSettings;
|
||||
use cache::CacheConfig;
|
||||
use helpers::{to_duration, to_mode, to_block_id, to_u256, to_pending_set, to_price, replace_home,
|
||||
geth_ipc_path, parity_ipc_path, to_bootnodes, to_addresses, to_address, to_gas_limit};
|
||||
use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras, SpecType};
|
||||
use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras};
|
||||
use ethcore_logger::Config as LogConfig;
|
||||
use dir::Directories;
|
||||
use dapps::Configuration as DappsConfiguration;
|
||||
@@ -459,23 +459,12 @@ impl Configuration {
|
||||
ret.min_peers = self.min_peers();
|
||||
let mut net_path = PathBuf::from(self.directories().db);
|
||||
net_path.push("network");
|
||||
let net_specific_path = net_path.join(&try!(self.network_specific_path()));
|
||||
ret.config_path = Some(net_path.to_str().unwrap().to_owned());
|
||||
ret.net_config_path = Some(net_specific_path.to_str().unwrap().to_owned());
|
||||
ret.reserved_nodes = try!(self.init_reserved_nodes());
|
||||
ret.allow_non_reserved = !self.args.flag_reserved_only;
|
||||
Ok(ret)
|
||||
}
|
||||
|
||||
fn network_specific_path(&self) -> Result<PathBuf, String> {
|
||||
let spec_type : SpecType = try!(self.chain().parse());
|
||||
let spec = try!(spec_type.spec());
|
||||
let id = try!(self.network_id());
|
||||
let mut path = PathBuf::new();
|
||||
path.push(format!("{}", id.unwrap_or_else(|| spec.network_id())));
|
||||
Ok(path)
|
||||
}
|
||||
|
||||
fn network_id(&self) -> Result<Option<U256>, String> {
|
||||
let net_id = self.args.flag_network_id.as_ref().or(self.args.flag_networkid.as_ref());
|
||||
match net_id {
|
||||
|
||||
@@ -110,6 +110,13 @@ impl DatabaseDirectories {
|
||||
dir.push("snapshot");
|
||||
dir
|
||||
}
|
||||
|
||||
/// Get the path for the network directory.
|
||||
pub fn network_path(&self) -> PathBuf {
|
||||
let mut dir = self.fork_path();
|
||||
dir.push("network");
|
||||
dir
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
@@ -179,7 +179,7 @@ pub fn default_network_config() -> ::ethsync::NetworkConfiguration {
|
||||
use ethsync::NetworkConfiguration;
|
||||
NetworkConfiguration {
|
||||
config_path: Some(replace_home("$HOME/.parity/network")),
|
||||
net_config_path: Some(replace_home("$HOME/.parity/network/1")),
|
||||
net_config_path: None,
|
||||
listen_address: Some("0.0.0.0:30303".into()),
|
||||
public_address: None,
|
||||
udp_port: None,
|
||||
|
||||
@@ -27,7 +27,7 @@ use ethcore::service::ClientService;
|
||||
use ethcore::account_provider::AccountProvider;
|
||||
use ethcore::miner::{Miner, MinerService, ExternalMiner, MinerOptions};
|
||||
use ethcore::snapshot;
|
||||
use ethsync::{SyncConfig, SyncProvider};
|
||||
use ethsync::SyncConfig;
|
||||
use informant::Informant;
|
||||
|
||||
use rpc::{HttpServer, IpcServer, HttpConfiguration, IpcConfiguration};
|
||||
@@ -201,6 +201,9 @@ pub fn execute(cmd: RunCmd) -> Result<(), String> {
|
||||
net_conf.boot_nodes = spec.nodes.clone();
|
||||
}
|
||||
|
||||
// set network path.
|
||||
net_conf.net_config_path = Some(db_dirs.network_path().to_string_lossy().into_owned());
|
||||
|
||||
// create supervisor
|
||||
let mut hypervisor = modules::hypervisor(&cmd.dirs.ipc_path());
|
||||
|
||||
@@ -302,7 +305,7 @@ pub fn execute(cmd: RunCmd) -> Result<(), String> {
|
||||
let sync = sync_provider.clone();
|
||||
let watcher = Arc::new(snapshot::Watcher::new(
|
||||
service.client(),
|
||||
move || sync.status().is_major_syncing(),
|
||||
move || ::ethsync::SyncProvider::status(&*sync).is_major_syncing(),
|
||||
service.io().channel(),
|
||||
SNAPSHOT_PERIOD,
|
||||
SNAPSHOT_HISTORY,
|
||||
|
||||
Reference in New Issue
Block a user