Add first Updater RPC.

This commit is contained in:
Gav Wood 2016-12-11 23:36:38 +01:00
parent d81d9d77b2
commit 2d0d4682ad
No known key found for this signature in database
GPG Key ID: C49C1ACA1CC9B252
4 changed files with 60 additions and 2 deletions

View File

@ -38,7 +38,7 @@ use v1::types::{
Bytes, U256, H160, H256, H512,
Peers, Transaction, RpcSettings, Histogram,
TransactionStats, LocalTransactionStatus,
BlockNumber,
BlockNumber, ConsensusCapability
};
use v1::helpers::{errors, SigningQueue, SignerService, NetworkSettings};
use v1::helpers::dispatch::DEFAULT_MAC;
@ -360,4 +360,10 @@ impl<C, M, S: ?Sized, U> Parity for ParityClient<C, M, S, U> where
(format!("0x{}", a.hex()), m)
}).collect())
}
fn consensus_capability(&self) -> Result<ConsensusCapability, Error> {
try!(self.active());
let updater = take_weak!(self.updater);
Ok(updater.capability().into())
}
}

View File

@ -23,7 +23,7 @@ use v1::types::{
H160, H256, H512, U256, Bytes,
Peers, Transaction, RpcSettings, Histogram,
TransactionStats, LocalTransactionStatus,
BlockNumber
BlockNumber, ConsensusCapability
};
build_rpc_trait! {
@ -155,5 +155,9 @@ build_rpc_trait! {
/// Returns accounts information.
#[rpc(name = "parity_accounts")]
fn accounts(&self) -> Result<BTreeMap<String, BTreeMap<String, String>>, Error>;
/// Returns information on current consensus capability.
#[rpc(name = "parity_consensusCapability")]
fn consensus_capability(&self) -> Result<ConsensusCapability, Error>;
}
}

View File

@ -0,0 +1,46 @@
// Copyright 2015, 2016 Parity Technologies (UK) Ltd.
// This file is part of Parity.
// Parity is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
use updater::CapState;
/// Capability info
#[derive(Debug, Serialize, PartialEq)]
pub enum ConsensusCapability {
/// Unknown.
#[serde(rename="unknown")]
Unknown,
/// Capable of consensus indefinitely.
#[serde(rename="capable")]
Capable,
/// Capable of consensus up until a definite block.
#[serde(rename="capableUntil")]
CapableUntil(u64),
/// Incapable of consensus since a particular block.
#[serde(rename="incapableSince")]
IncapableSince(u64),
}
impl Into<ConsensusCapability> for CapState {
fn into(self) -> ConsensusCapability {
match self {
CapState::Unknown => ConsensusCapability::Unknown,
CapState::Capable => ConsensusCapability::Capable,
CapState::CapableUntil(n) => ConsensusCapability::CapableUntil(n),
CapState::IncapableSince(n) => ConsensusCapability::IncapableSince(n),
}
}
}

View File

@ -34,6 +34,7 @@ mod trace_filter;
mod uint;
mod work;
mod histogram;
mod consensus_status;
pub use self::bytes::Bytes;
pub use self::block::{RichBlock, Block, BlockTransactions};
@ -55,3 +56,4 @@ pub use self::trace_filter::TraceFilter;
pub use self::uint::{U128, U256};
pub use self::work::Work;
pub use self::histogram::Histogram;
pub use self::consensus_status::ConsensusCapability;