Browse Source
Use `equals` instead of manual comparison of last headers
refactor-mempool
Roman Zeyde
7 years ago
No known key found for this signature in database
GPG Key ID: 87CAE5FA46917CBB
2 changed files with
6 additions and
4 deletions
-
src/daemon.rs
-
src/index.rs
|
|
@ -17,6 +17,7 @@ pub struct Daemon { |
|
|
|
url: String, |
|
|
|
} |
|
|
|
|
|
|
|
#[derive(Eq, PartialEq)] |
|
|
|
pub struct HeaderEntry { |
|
|
|
height: usize, |
|
|
|
hash: Sha256dHash, |
|
|
@ -42,8 +43,8 @@ pub struct HeaderList { |
|
|
|
} |
|
|
|
|
|
|
|
impl HeaderList { |
|
|
|
pub fn best_header(&self) -> &BlockHeader { |
|
|
|
&self.headers.last().unwrap().header |
|
|
|
pub fn equals(&self, other: &HeaderList) -> bool { |
|
|
|
self.headers.last() == other.headers.last() |
|
|
|
} |
|
|
|
|
|
|
|
pub fn headers(&self) -> &[HeaderEntry] { |
|
|
|
|
|
@ -282,14 +282,15 @@ impl Index { |
|
|
|
current_headers: &'a HeaderList, |
|
|
|
) -> Vec<&'a HeaderEntry> { |
|
|
|
if let Some(ref indexed_headers) = self.headers { |
|
|
|
if current_headers.best_header() == indexed_headers.best_header() { |
|
|
|
if current_headers.equals(indexed_headers) { |
|
|
|
return Vec::new(); // everything was indexed already.
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let indexed_headers: HeaderMap = read_indexed_headers(&store); |
|
|
|
{ |
|
|
|
let best_block_header: &BlockHeader = current_headers.best_header(); |
|
|
|
let best_block_header: &BlockHeader = |
|
|
|
current_headers.headers().last().unwrap().header(); |
|
|
|
info!( |
|
|
|
"got {} headers (indexed {}), best {} @ {}", |
|
|
|
current_headers.headers().len(), |
|
|
|