Refactor SyncState (#3297)

* Refactor SyncState

Method sync_error() retrun type was simplified.
update_txhashset_download() was  made type safe, which eliminates a runtime enum variant's  check, added an atomic status update
This commit is contained in:
hashmap
2020-04-20 12:30:04 +02:00
committed by GitHub
parent e64e90623b
commit d8c6eef485
7 changed files with 130 additions and 106 deletions
+15 -15
View File
@@ -23,7 +23,9 @@ use std::sync::{Arc, Weak};
use std::thread;
use std::time::Instant;
use crate::chain::{self, BlockStatus, ChainAdapter, Options, SyncState, SyncStatus};
use crate::chain::{
self, BlockStatus, ChainAdapter, Options, SyncState, SyncStatus, TxHashsetDownloadStats,
};
use crate::common::hooks::{ChainEvents, NetEvents};
use crate::common::types::{ChainValidationMode, DandelionEpoch, ServerConfig};
use crate::core::core::hash::{Hash, Hashed};
@@ -399,20 +401,18 @@ impl p2p::ChainAdapter for NetToChainAdapter {
total_size: u64,
) -> bool {
match self.sync_state.status() {
SyncStatus::TxHashsetDownload {
update_time: old_update_time,
downloaded_size: old_downloaded_size,
..
} => self
.sync_state
.update_txhashset_download(SyncStatus::TxHashsetDownload {
start_time,
prev_update_time: old_update_time,
update_time: Utc::now(),
prev_downloaded_size: old_downloaded_size,
downloaded_size,
total_size,
}),
SyncStatus::TxHashsetDownload(prev) => {
self.sync_state
.update_txhashset_download(TxHashsetDownloadStats {
start_time,
prev_update_time: prev.update_time,
update_time: Utc::now(),
prev_downloaded_size: prev.downloaded_size,
downloaded_size,
total_size,
});
true
}
_ => false,
}
}