block queue info
This commit is contained in:
parent
5337de8d42
commit
f31ddec3a8
@ -28,6 +28,8 @@ use service::*;
|
|||||||
use client::BlockStatus;
|
use client::BlockStatus;
|
||||||
use util::panics::*;
|
use util::panics::*;
|
||||||
|
|
||||||
|
pub use types::block_queue_info::BlockQueueInfo;
|
||||||
|
|
||||||
known_heap_size!(0, UnverifiedBlock, VerifyingBlock, PreverifiedBlock);
|
known_heap_size!(0, UnverifiedBlock, VerifyingBlock, PreverifiedBlock);
|
||||||
|
|
||||||
const MIN_MEM_LIMIT: usize = 16384;
|
const MIN_MEM_LIMIT: usize = 16384;
|
||||||
@ -53,22 +55,6 @@ impl Default for BlockQueueConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Block queue status
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct BlockQueueInfo {
|
|
||||||
/// Number of queued blocks pending verification
|
|
||||||
pub unverified_queue_size: usize,
|
|
||||||
/// Number of verified queued blocks pending import
|
|
||||||
pub verified_queue_size: usize,
|
|
||||||
/// Number of blocks being verified
|
|
||||||
pub verifying_queue_size: usize,
|
|
||||||
/// Configured maximum number of blocks in the queue
|
|
||||||
pub max_queue_size: usize,
|
|
||||||
/// Configured maximum number of bytes to use
|
|
||||||
pub max_mem_use: usize,
|
|
||||||
/// Heap memory used in bytes
|
|
||||||
pub mem_used: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl BlockQueueInfo {
|
impl BlockQueueInfo {
|
||||||
/// The total size of the queues.
|
/// The total size of the queues.
|
||||||
|
@ -54,43 +54,3 @@ pub struct BranchBecomingCanonChainData {
|
|||||||
/// Hashes of the blocks which were invalidated.
|
/// Hashes of the blocks which were invalidated.
|
||||||
pub retracted: Vec<H256>,
|
pub retracted: Vec<H256>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromRawBytesVariable for BranchBecomingCanonChainData {
|
|
||||||
fn from_bytes_variable(bytes: &[u8]) -> Result<BranchBecomingCanonChainData, FromBytesError> {
|
|
||||||
type Tuple = (Vec<H256>, Vec<H256>, H256);
|
|
||||||
let (enacted, retracted, ancestor) = try!(Tuple::from_bytes_variable(bytes));
|
|
||||||
Ok(BranchBecomingCanonChainData { ancestor: ancestor, enacted: enacted, retracted: retracted })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FromRawBytesVariable for BlockLocation {
|
|
||||||
fn from_bytes_variable(bytes: &[u8]) -> Result<BlockLocation, FromBytesError> {
|
|
||||||
match bytes[0] {
|
|
||||||
0 => Ok(BlockLocation::CanonChain),
|
|
||||||
1 => Ok(BlockLocation::Branch),
|
|
||||||
2 => Ok(BlockLocation::BranchBecomingCanonChain(
|
|
||||||
try!(BranchBecomingCanonChainData::from_bytes_variable(&bytes[1..bytes.len()])))),
|
|
||||||
_ => Err(FromBytesError::UnknownMarker)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ToBytesWithMap for BranchBecomingCanonChainData {
|
|
||||||
fn to_bytes_map(&self) -> Vec<u8> {
|
|
||||||
(&self.enacted, &self.retracted, &self.ancestor).to_bytes_map()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ToBytesWithMap for BlockLocation {
|
|
||||||
fn to_bytes_map(&self) -> Vec<u8> {
|
|
||||||
match *self {
|
|
||||||
BlockLocation::CanonChain => vec![0u8],
|
|
||||||
BlockLocation::Branch => vec![1u8],
|
|
||||||
BlockLocation::BranchBecomingCanonChain(ref data) => {
|
|
||||||
let mut bytes = (&data.enacted, &data.retracted, &data.ancestor).to_bytes_map();
|
|
||||||
bytes.insert(0, 2u8);
|
|
||||||
bytes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -14,10 +14,32 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
use std::marker::PhantomData;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::collections::{HashSet, HashMap};
|
||||||
|
use std::ops::Deref;
|
||||||
|
use std::mem;
|
||||||
|
use std::collections::VecDeque;
|
||||||
|
use std::sync::*;
|
||||||
|
use std::path::Path;
|
||||||
|
use std::fmt;
|
||||||
|
use util::Itertools;
|
||||||
|
|
||||||
|
// util
|
||||||
|
use util::numbers::*;
|
||||||
|
use util::panics::*;
|
||||||
|
use util::network::*;
|
||||||
|
use util::io::*;
|
||||||
|
use util::rlp;
|
||||||
|
use util::sha3::*;
|
||||||
|
use util::{UtilError, CryptoError, Bytes, Signature, Secret, ec};
|
||||||
|
use util::rlp::{encode, decode, RlpStream, Rlp};
|
||||||
|
use util::journaldb;
|
||||||
|
use util::journaldb::JournalDB;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering as AtomicOrdering};
|
use std::sync::atomic::{AtomicUsize, Ordering as AtomicOrdering};
|
||||||
use util::*;
|
|
||||||
use util::panics::*;
|
// other
|
||||||
use views::BlockView;
|
use views::BlockView;
|
||||||
use error::{Error, ImportError, ExecutionError, BlockError, ImportResult};
|
use error::{Error, ImportError, ExecutionError, BlockError, ImportResult};
|
||||||
use header::{BlockNumber, Header};
|
use header::{BlockNumber, Header};
|
||||||
@ -478,7 +500,7 @@ impl Client {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//#[derive(Ipc)]
|
#[derive(Ipc)]
|
||||||
impl BlockChainClient for Client {
|
impl BlockChainClient for Client {
|
||||||
fn call(&self, t: &SignedTransaction, analytics: CallAnalytics) -> Result<Executed, ExecutionError> {
|
fn call(&self, t: &SignedTransaction, analytics: CallAnalytics) -> Result<Executed, ExecutionError> {
|
||||||
let header = self.block_header(BlockID::Latest).unwrap();
|
let header = self.block_header(BlockID::Latest).unwrap();
|
||||||
@ -770,7 +792,7 @@ impl BlockChainClient for Client {
|
|||||||
self.build_last_hashes(self.chain.best_block_hash())
|
self.build_last_hashes(self.chain.best_block_hash())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn import_transactions(&self, transactions: Vec<SignedTransaction>) -> Vec<Result<TransactionImportResult, Error>> {
|
fn import_transactions(&self, transactions: Vec<SignedTransaction>) -> Vec<Result<TransactionImportResult, String>> {
|
||||||
let fetch_account = |a: &Address| AccountDetails {
|
let fetch_account = |a: &Address| AccountDetails {
|
||||||
nonce: self.latest_nonce(a),
|
nonce: self.latest_nonce(a),
|
||||||
balance: self.latest_balance(a),
|
balance: self.latest_balance(a),
|
||||||
|
@ -197,6 +197,7 @@ struct VerifiedTransaction {
|
|||||||
/// transaction origin
|
/// transaction origin
|
||||||
origin: TransactionOrigin,
|
origin: TransactionOrigin,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl VerifiedTransaction {
|
impl VerifiedTransaction {
|
||||||
fn new(transaction: SignedTransaction, origin: TransactionOrigin) -> Result<Self, Error> {
|
fn new(transaction: SignedTransaction, origin: TransactionOrigin) -> Result<Self, Error> {
|
||||||
try!(transaction.sender());
|
try!(transaction.sender());
|
||||||
|
32
ethcore/src/types/block_queue_info.rs
Normal file
32
ethcore/src/types/block_queue_info.rs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2015, 2016 Ethcore (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/>.
|
||||||
|
|
||||||
|
/// Block queue status
|
||||||
|
#[derive(Debug, Binary)]
|
||||||
|
pub struct BlockQueueInfo {
|
||||||
|
/// Number of queued blocks pending verification
|
||||||
|
pub unverified_queue_size: usize,
|
||||||
|
/// Number of verified queued blocks pending import
|
||||||
|
pub verified_queue_size: usize,
|
||||||
|
/// Number of blocks being verified
|
||||||
|
pub verifying_queue_size: usize,
|
||||||
|
/// Configured maximum number of blocks in the queue
|
||||||
|
pub max_queue_size: usize,
|
||||||
|
/// Configured maximum number of bytes to use
|
||||||
|
pub max_mem_use: usize,
|
||||||
|
/// Heap memory used in bytes
|
||||||
|
pub mem_used: usize,
|
||||||
|
}
|
@ -25,3 +25,4 @@ pub mod executed;
|
|||||||
pub mod block_status;
|
pub mod block_status;
|
||||||
pub mod account_diff;
|
pub mod account_diff;
|
||||||
pub mod state_diff;
|
pub mod state_diff;
|
||||||
|
pub mod block_queue_info;
|
||||||
|
Loading…
Reference in New Issue
Block a user