More work.
This commit is contained in:
parent
4c9bb5aa25
commit
9d3b2352cc
@ -54,7 +54,7 @@ use blockchain::{BlockChain, BlockProvider, TreeRoute, ImportRoute};
|
|||||||
use client::{
|
use client::{
|
||||||
BlockId, TransactionId, UncleId, TraceId, ClientConfig, BlockChainClient,
|
BlockId, TransactionId, UncleId, TraceId, ClientConfig, BlockChainClient,
|
||||||
MiningBlockChainClient, TraceFilter, CallAnalytics, BlockImportError, Mode,
|
MiningBlockChainClient, TraceFilter, CallAnalytics, BlockImportError, Mode,
|
||||||
ChainNotify,
|
ChainNotify, UpdatePolicy,
|
||||||
};
|
};
|
||||||
use client::Error as ClientError;
|
use client::Error as ClientError;
|
||||||
use env_info::EnvInfo;
|
use env_info::EnvInfo;
|
||||||
@ -129,6 +129,7 @@ impl SleepState {
|
|||||||
/// Call `import_block()` to import a block asynchronously; `flush_queue()` flushes the queue.
|
/// Call `import_block()` to import a block asynchronously; `flush_queue()` flushes the queue.
|
||||||
pub struct Client {
|
pub struct Client {
|
||||||
mode: Mutex<Mode>,
|
mode: Mutex<Mode>,
|
||||||
|
update_policy: UpdatePolicy,
|
||||||
chain: RwLock<Arc<BlockChain>>,
|
chain: RwLock<Arc<BlockChain>>,
|
||||||
tracedb: RwLock<TraceDB<BlockChain>>,
|
tracedb: RwLock<TraceDB<BlockChain>>,
|
||||||
engine: Arc<Engine>,
|
engine: Arc<Engine>,
|
||||||
|
@ -66,6 +66,35 @@ impl FromStr for DatabaseCompactionProfile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||||
|
pub enum UpdateFilter {
|
||||||
|
All,
|
||||||
|
Patch,
|
||||||
|
Critical,
|
||||||
|
None,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||||
|
pub struct UpdatePolicy {
|
||||||
|
download_only: bool,
|
||||||
|
track: Track,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Operating mode for the client.
|
||||||
|
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||||
|
pub enum UpdatePolicy {
|
||||||
|
/// Always on.
|
||||||
|
Active,
|
||||||
|
/// Goes offline after RLP is inactive for some (given) time, but
|
||||||
|
/// comes back online after a while of inactivity.
|
||||||
|
Passive(Duration, Duration),
|
||||||
|
/// Goes offline after RLP is inactive for some (given) time and
|
||||||
|
/// stays inactive.
|
||||||
|
Dark(Duration),
|
||||||
|
/// Always off.
|
||||||
|
Off,
|
||||||
|
}
|
||||||
|
|
||||||
/// Operating mode for the client.
|
/// Operating mode for the client.
|
||||||
#[derive(Debug, Eq, PartialEq, Clone)]
|
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||||
pub enum Mode {
|
pub enum Mode {
|
||||||
|
@ -26,7 +26,7 @@ mod client;
|
|||||||
mod updater;
|
mod updater;
|
||||||
|
|
||||||
pub use self::client::*;
|
pub use self::client::*;
|
||||||
pub use self::config::{Mode, ClientConfig, DatabaseCompactionProfile, BlockChainConfig, VMType};
|
pub use self::config::{Mode, ClientConfig, UpdatePolicy, Automation, DatabaseCompactionProfile, BlockChainConfig, VMType};
|
||||||
pub use self::error::Error;
|
pub use self::error::Error;
|
||||||
pub use types::ids::*;
|
pub use types::ids::*;
|
||||||
pub use self::test_client::{TestBlockChainClient, EachBlockWith};
|
pub use self::test_client::{TestBlockChainClient, EachBlockWith};
|
||||||
|
@ -34,6 +34,8 @@ pub struct Updater {
|
|||||||
client: Weak<Client>,
|
client: Weak<Client>,
|
||||||
operations: Operations,
|
operations: Operations,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pub this: VersionInfo,
|
pub this: VersionInfo,
|
||||||
pub release_info: Option<ReleaseInfo>,
|
pub release_info: Option<ReleaseInfo>,
|
||||||
|
|
||||||
|
@ -77,6 +77,7 @@ usage! {
|
|||||||
flag_mode: String = "last", or |c: &Config| otry!(c.parity).mode.clone(),
|
flag_mode: String = "last", or |c: &Config| otry!(c.parity).mode.clone(),
|
||||||
flag_mode_timeout: u64 = 300u64, or |c: &Config| otry!(c.parity).mode_timeout.clone(),
|
flag_mode_timeout: u64 = 300u64, or |c: &Config| otry!(c.parity).mode_timeout.clone(),
|
||||||
flag_mode_alarm: u64 = 3600u64, or |c: &Config| otry!(c.parity).mode_alarm.clone(),
|
flag_mode_alarm: u64 = 3600u64, or |c: &Config| otry!(c.parity).mode_alarm.clone(),
|
||||||
|
flag_auto_update: String = "consensus", or |c: &Config| otry!(c.parity).auto_update.clone(),
|
||||||
flag_chain: String = "homestead", or |c: &Config| otry!(c.parity).chain.clone(),
|
flag_chain: String = "homestead", or |c: &Config| otry!(c.parity).chain.clone(),
|
||||||
flag_db_path: String = "$HOME/.parity", or |c: &Config| otry!(c.parity).db_path.clone(),
|
flag_db_path: String = "$HOME/.parity", or |c: &Config| otry!(c.parity).db_path.clone(),
|
||||||
flag_keys_path: String = "$HOME/.parity/keys", or |c: &Config| otry!(c.parity).keys_path.clone(),
|
flag_keys_path: String = "$HOME/.parity/keys", or |c: &Config| otry!(c.parity).keys_path.clone(),
|
||||||
@ -501,6 +502,7 @@ mod tests {
|
|||||||
flag_mode: "last".into(),
|
flag_mode: "last".into(),
|
||||||
flag_mode_timeout: 300u64,
|
flag_mode_timeout: 300u64,
|
||||||
flag_mode_alarm: 3600u64,
|
flag_mode_alarm: 3600u64,
|
||||||
|
flag_auto_update: "consensus".into(),
|
||||||
flag_chain: "xyz".into(),
|
flag_chain: "xyz".into(),
|
||||||
flag_db_path: "$HOME/.parity".into(),
|
flag_db_path: "$HOME/.parity".into(),
|
||||||
flag_keys_path: "$HOME/.parity/keys".into(),
|
flag_keys_path: "$HOME/.parity/keys".into(),
|
||||||
|
@ -24,20 +24,23 @@ Operating Options:
|
|||||||
wakes regularly to resync.
|
wakes regularly to resync.
|
||||||
dark - Parity syncs only when the RPC is active.
|
dark - Parity syncs only when the RPC is active.
|
||||||
offline - Parity doesn't sync. (default: {flag_mode}).
|
offline - Parity doesn't sync. (default: {flag_mode}).
|
||||||
--updates POLICY Set the client updating policy. POLICY specifies
|
|
||||||
which updates Parity will auto-install:
|
|
||||||
track - All updates in the current release track.
|
|
||||||
patch - All updates of the current minor version.
|
|
||||||
critical - Only consensus/security updates.
|
|
||||||
none - No updates. Not recommended.
|
|
||||||
--no-consensus Force the binary to run even if there are known
|
|
||||||
issues regarding consensus. Not recommended.
|
|
||||||
--mode-timeout SECS Specify the number of seconds before inactivity
|
--mode-timeout SECS Specify the number of seconds before inactivity
|
||||||
timeout occurs when mode is dark or passive
|
timeout occurs when mode is dark or passive
|
||||||
(default: {flag_mode_timeout}).
|
(default: {flag_mode_timeout}).
|
||||||
--mode-alarm SECS Specify the number of seconds before auto sleep
|
--mode-alarm SECS Specify the number of seconds before auto sleep
|
||||||
reawake timeout occurs when mode is passive
|
reawake timeout occurs when mode is passive
|
||||||
(default: {flag_mode_alarm}).
|
(default: {flag_mode_alarm}).
|
||||||
|
--auto-update TRACK Set a release track to automatically update and
|
||||||
|
install.
|
||||||
|
all - All updates in the current release track.
|
||||||
|
patch - All updates of the current minor version.
|
||||||
|
critical - Only consensus/security updates.
|
||||||
|
none - No updates will be auto-installed.
|
||||||
|
(default: {flag_auto_update}).
|
||||||
|
--no-download Normally new releases will be downloaded ready for
|
||||||
|
updating. This disables it. Not recommended.
|
||||||
|
--no-consensus Force the binary to run even if there are known
|
||||||
|
issues regarding consensus. Not recommended.
|
||||||
--chain CHAIN Specify the blockchain type. CHAIN may be either a
|
--chain CHAIN Specify the blockchain type. CHAIN may be either a
|
||||||
JSON chain specification file or olympic, frontier,
|
JSON chain specification file or olympic, frontier,
|
||||||
homestead, mainnet, morden, ropsten, classic, expanse,
|
homestead, mainnet, morden, ropsten, classic, expanse,
|
||||||
|
@ -23,7 +23,7 @@ use cli::{Args, ArgsError};
|
|||||||
use util::{Hashable, U256, Uint, Bytes, version_data, Secret, Address};
|
use util::{Hashable, U256, Uint, Bytes, version_data, Secret, Address};
|
||||||
use util::log::Colour;
|
use util::log::Colour;
|
||||||
use ethsync::{NetworkConfiguration, is_valid_node_url, AllowIP};
|
use ethsync::{NetworkConfiguration, is_valid_node_url, AllowIP};
|
||||||
use ethcore::client::VMType;
|
use ethcore::client::{VMType, UpdatePolicy};
|
||||||
use ethcore::miner::{MinerOptions, Banning};
|
use ethcore::miner::{MinerOptions, Banning};
|
||||||
|
|
||||||
use rpc::{IpcConfiguration, HttpConfiguration};
|
use rpc::{IpcConfiguration, HttpConfiguration};
|
||||||
@ -585,6 +585,10 @@ impl Configuration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn update_policy(&self) -> UpdatePolicy {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
fn directories(&self) -> Directories {
|
fn directories(&self) -> Directories {
|
||||||
use util::path;
|
use util::path;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user