Additional RPC methods for settings

This commit is contained in:
Tomasz Drwięga
2016-04-21 19:19:42 +02:00
parent ffc5d726bd
commit 0458a3378c
9 changed files with 202 additions and 17 deletions

View File

@@ -25,6 +25,7 @@ use docopt::Docopt;
use die::*;
use util::*;
use util::keys::store::AccountService;
use util::network_settings::NetworkSettings;
use ethcore::client::{append_path, get_db_path, ClientConfig};
use ethcore::ethereum;
use ethcore::spec::Spec;
@@ -236,5 +237,17 @@ impl Configuration {
}
account_service
}
pub fn network_settings(&self) -> NetworkSettings {
NetworkSettings {
name: self.args.flag_identity.clone(),
chain: self.args.flag_chain.clone(),
max_peers: self.args.flag_maxpeers.unwrap_or(self.args.flag_peers),
network_port: self.args.flag_port,
rpc_enabled: self.args.flag_rpc || self.args.flag_jsonrpc,
rpc_interface: self.args.flag_rpcaddr.clone().unwrap_or(self.args.flag_jsonrpc_interface.clone()),
rpc_port: self.args.flag_rpcport.unwrap_or(self.args.flag_jsonrpc_port),
}
}
}

View File

@@ -153,6 +153,8 @@ fn execute_client(conf: Configuration) {
miner.set_minimal_gas_price(conf.gas_price());
miner.set_transactions_limit(conf.args.flag_tx_limit);
let network_settings = Arc::new(conf.network_settings());
// Sync
let sync = EthSync::register(service.network(), sync_config, client.clone(), miner.clone());
@@ -168,7 +170,8 @@ fn execute_client(conf: Configuration) {
sync: sync.clone(),
secret_store: account_service.clone(),
miner: miner.clone(),
logger: logger.clone()
logger: logger.clone(),
settings: network_settings.clone(),
});
let webapp_server = webapp::new(webapp::Configuration {
@@ -182,7 +185,8 @@ fn execute_client(conf: Configuration) {
sync: sync.clone(),
secret_store: account_service.clone(),
miner: miner.clone(),
logger: logger.clone()
logger: logger.clone(),
settings: network_settings.clone(),
});
// Register IO handler

View File

@@ -23,6 +23,7 @@ use ethsync::EthSync;
use ethminer::Miner;
use util::RotatingLogger;
use util::keys::store::{AccountService};
use util::network_settings::NetworkSettings;
use die::*;
#[cfg(feature = "rpc")]
@@ -46,6 +47,7 @@ pub struct Dependencies {
pub secret_store: Arc<AccountService>,
pub miner: Arc<Miner>,
pub logger: Arc<RotatingLogger>,
pub settings: Arc<NetworkSettings>,
}
pub fn new(conf: Configuration, deps: Dependencies) -> Option<RpcServer> {
@@ -94,7 +96,7 @@ pub fn setup_rpc_server(
server.add_delegate(EthFilterClient::new(&deps.client, &deps.miner).to_delegate());
},
"personal" => server.add_delegate(PersonalClient::new(&deps.secret_store).to_delegate()),
"ethcore" => server.add_delegate(EthcoreClient::new(&deps.miner, deps.logger.clone()).to_delegate()),
"ethcore" => server.add_delegate(EthcoreClient::new(&deps.miner, deps.logger.clone(), deps.settings.clone()).to_delegate()),
_ => {
die!("{}: Invalid API name to be enabled.", api);
},

View File

@@ -22,6 +22,7 @@ use ethsync::EthSync;
use ethminer::Miner;
use util::RotatingLogger;
use util::keys::store::{AccountService};
use util::network_settings::NetworkSettings;
use die::*;
#[cfg(feature = "webapp")]
@@ -43,6 +44,7 @@ pub struct Dependencies {
pub secret_store: Arc<AccountService>,
pub miner: Arc<Miner>,
pub logger: Arc<RotatingLogger>,
pub settings: Arc<NetworkSettings>,
}
pub fn new(configuration: Configuration, deps: Dependencies) -> Option<WebappServer> {
@@ -96,7 +98,7 @@ pub fn setup_webapp_server(
server.add_delegate(EthClient::new(&deps.client, &deps.sync, &deps.secret_store, &deps.miner).to_delegate());
server.add_delegate(EthFilterClient::new(&deps.client, &deps.miner).to_delegate());
server.add_delegate(PersonalClient::new(&deps.secret_store).to_delegate());
server.add_delegate(EthcoreClient::new(&deps.miner, deps.logger).to_delegate());
server.add_delegate(EthcoreClient::new(&deps.miner, deps.logger, deps.settings).to_delegate());
let start_result = match auth {
None => {