More work.

This commit is contained in:
Gav Wood 2016-11-23 16:29:15 +01:00
parent 4c9bb5aa25
commit 9d3b2352cc
No known key found for this signature in database
GPG Key ID: C49C1ACA1CC9B252
7 changed files with 52 additions and 11 deletions

View File

@ -54,7 +54,7 @@ use blockchain::{BlockChain, BlockProvider, TreeRoute, ImportRoute};
use client::{
BlockId, TransactionId, UncleId, TraceId, ClientConfig, BlockChainClient,
MiningBlockChainClient, TraceFilter, CallAnalytics, BlockImportError, Mode,
ChainNotify,
ChainNotify, UpdatePolicy,
};
use client::Error as ClientError;
use env_info::EnvInfo;
@ -129,6 +129,7 @@ impl SleepState {
/// Call `import_block()` to import a block asynchronously; `flush_queue()` flushes the queue.
pub struct Client {
mode: Mutex<Mode>,
update_policy: UpdatePolicy,
chain: RwLock<Arc<BlockChain>>,
tracedb: RwLock<TraceDB<BlockChain>>,
engine: Arc<Engine>,

View File

@ -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.
#[derive(Debug, Eq, PartialEq, Clone)]
pub enum Mode {

View File

@ -26,7 +26,7 @@ mod client;
mod updater;
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 types::ids::*;
pub use self::test_client::{TestBlockChainClient, EachBlockWith};

View File

@ -34,6 +34,8 @@ pub struct Updater {
client: Weak<Client>,
operations: Operations,
pub this: VersionInfo,
pub release_info: Option<ReleaseInfo>,

View File

@ -77,6 +77,7 @@ usage! {
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_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_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(),
@ -501,6 +502,7 @@ mod tests {
flag_mode: "last".into(),
flag_mode_timeout: 300u64,
flag_mode_alarm: 3600u64,
flag_auto_update: "consensus".into(),
flag_chain: "xyz".into(),
flag_db_path: "$HOME/.parity".into(),
flag_keys_path: "$HOME/.parity/keys".into(),

View File

@ -24,20 +24,23 @@ Operating Options:
wakes regularly to resync.
dark - Parity syncs only when the RPC is active.
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
timeout occurs when mode is dark or passive
(default: {flag_mode_timeout}).
--mode-alarm SECS Specify the number of seconds before auto sleep
reawake timeout occurs when mode is passive
(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
JSON chain specification file or olympic, frontier,
homestead, mainnet, morden, ropsten, classic, expanse,

View File

@ -23,7 +23,7 @@ use cli::{Args, ArgsError};
use util::{Hashable, U256, Uint, Bytes, version_data, Secret, Address};
use util::log::Colour;
use ethsync::{NetworkConfiguration, is_valid_node_url, AllowIP};
use ethcore::client::VMType;
use ethcore::client::{VMType, UpdatePolicy};
use ethcore::miner::{MinerOptions, Banning};
use rpc::{IpcConfiguration, HttpConfiguration};
@ -585,6 +585,10 @@ impl Configuration {
}
}
fn update_policy(&self) -> UpdatePolicy {
}
fn directories(&self) -> Directories {
use util::path;