This commit is contained in:
NikVolf 2016-10-18 17:49:53 +03:00
parent 08da5b831e
commit 564f04011a
2 changed files with 32 additions and 0 deletions

View File

@ -54,6 +54,7 @@ pub enum Chain {
Orphan,
}
#[derive(PartialEq, Debug)]
/// block status within the queue
pub enum BlockStatus {
Valid,

View File

@ -27,6 +27,17 @@ pub struct Queue {
}
impl Queue {
/// New verification queue
pub fn new(verifier: Box<Verify>) -> Self {
Queue {
verifier: verifier,
items: RwLock::new(LinkedHashMap::new()),
verified: RwLock::new(LinkedHashMap::new()),
invalid: RwLock::new(HashSet::new()),
}
}
/// Process one block in the queue
pub fn process(&self) {
let (hash, block) = {
@ -59,3 +70,23 @@ impl Queue {
else { BlockStatus::Absent }
}
}
#[cfg(test)]
mod tests {
use super::Queue;
use super::super::{BlockStatus, VerificationResult, Verify, Chain};
use chain::Block;
use primitives::hash::H256;
struct FacileVerifier;
impl Verify for FacileVerifier {
fn verify(&self, block: &Block) -> VerificationResult { Ok(Chain::Main) }
}
#[test]
fn new() {
let queue = Queue::new(Box::new(FacileVerifier));
assert_eq!(queue.block_status(&H256::from(0u8)), BlockStatus::Absent);
}
}