diff --git a/blockchain/apply_valid_block.rs b/blockchain/apply_valid_block.rs index 23e781dffa3435ba91acb69e17685071ae1a7f63..4b5ecfdc3f3041f0b3f4f9b2a6132cf1d4287d92 100644 --- a/blockchain/apply_valid_block.rs +++ b/blockchain/apply_valid_block.rs @@ -24,9 +24,7 @@ use duniter_documents::blockchain::Document; use duniter_documents::BlockId; use duniter_wotb::data::{NewLinkResult, RemLinkResult}; use duniter_wotb::{NodeId, WebOfTrust}; -use rustbreak::backend::Backend; use std::collections::{HashMap, HashSet}; -use std::fmt::Debug; #[derive(Debug)] /// Stores all queries to apply in database to "apply" the block @@ -43,10 +41,10 @@ pub enum ApplyValidBlockError { RevokeUnknowNodeId(), } -pub fn apply_valid_block<W: WebOfTrust, B: Backend + Debug>( +pub fn apply_valid_block<W: WebOfTrust>( block: &BlockDocument, wot_index: &mut HashMap<PubKey, NodeId>, - wot_db: &BinDB<W, B>, + wot_db: &BinDB<W>, expire_certs: &HashMap<(NodeId, NodeId), BlockId>, old_fork_id: Option<ForkId>, ) -> Result<ValidBlockApplyReqs, ApplyValidBlockError> { diff --git a/blockchain/check_and_apply_block.rs b/blockchain/check_and_apply_block.rs index 620aad46cabefa51a3549a1e218bbe86bfb0af77..62366dd6548a25fbd6b6d7e8b4e44cafb7662834 100644 --- a/blockchain/check_and_apply_block.rs +++ b/blockchain/check_and_apply_block.rs @@ -22,8 +22,6 @@ use duniter_dal::*; use duniter_documents::blockchain::Document; use duniter_documents::{BlockHash, BlockId, Blockstamp, PreviousBlockstamp}; use duniter_network::NetworkBlock; -use rustbreak::backend::Backend; -use std::fmt::Debug; use *; #[derive(Debug, Copy, Clone)] @@ -55,13 +53,13 @@ impl From<ApplyValidBlockError> for BlockError { } } -pub fn check_and_apply_block<W: WebOfTrust, B: Backend + Debug>( +pub fn check_and_apply_block<W: WebOfTrust>( blocks_databases: &BlocksV10DBs, - certs_db: &BinFileDB<CertsExpirV10Datas>, + certs_db: &BinDB<CertsExpirV10Datas>, block: &Block, current_blockstamp: &Blockstamp, wotb_index: &mut HashMap<PubKey, NodeId>, - wot_db: &BinDB<W, B>, + wot_db: &BinDB<W>, forks_states: &[ForkStatus], ) -> Result<ValidBlockApplyReqs, BlockError> { let (block_doc, already_have_block) = match *block { diff --git a/blockchain/dbex.rs b/blockchain/dbex.rs index 8833738f3993a2946c23cfdf4551410098acbeda..a07cc1f29e72d36df4a4e6df3d331565ee50ecb5 100644 --- a/blockchain/dbex.rs +++ b/blockchain/dbex.rs @@ -64,9 +64,9 @@ pub fn dbex_tx<DC: DuniterConf>(profile: &str, conf: &DC, _csv: bool, query: &DB // Open databases let load_dbs_begin = SystemTime::now(); - //let blocks_databases = BlocksV10DBs::open(&db_path, false); - let currency_databases = CurrencyV10DBs::<FileBackend>::open(&db_path); - let wot_databases = WotsV10DBs::open(&db_path, false); + //let blocks_databases = BlocksV10DBs::open(Some(&db_path)); + let currency_databases = CurrencyV10DBs::open(Some(&db_path)); + let wot_databases = WotsV10DBs::open(Some(&db_path)); let load_dbs_duration = SystemTime::now() .duration_since(load_dbs_begin) .expect("duration_since error !"); @@ -122,7 +122,7 @@ pub fn dbex_wot<DC: DuniterConf>(profile: &str, conf: &DC, csv: bool, query: &DB let load_dbs_begin = SystemTime::now(); let currency_params_db = open_db::<CurrencyParamsV10Datas>(&db_path, "params.db").expect("Fail to open params db"); - let wot_databases = WotsV10DBs::open(&db_path, false); + let wot_databases = WotsV10DBs::open(Some(&db_path)); let load_dbs_duration = SystemTime::now() .duration_since(load_dbs_begin) .expect("duration_since error"); @@ -155,7 +155,7 @@ pub fn dbex_wot<DC: DuniterConf>(profile: &str, conf: &DC, csv: bool, query: &DB .expect("Fail to read IdentitiesDB !"); // Open wot db - let wot_db = open_wot_db::<RustyWebOfTrust>(&db_path).expect("Fail to open WotDB !"); + let wot_db = open_wot_db::<RustyWebOfTrust>(Some(&db_path)).expect("Fail to open WotDB !"); // Print wot blockstamp //println!("Wot : Current blockstamp = {}.", wot_blockstamp); diff --git a/blockchain/lib.rs b/blockchain/lib.rs index 40d256276c6decefe5a6839f39192d95fdfceb64..410379bfb754e51498063199747fc7b75d2b4010 100644 --- a/blockchain/lib.rs +++ b/blockchain/lib.rs @@ -16,19 +16,10 @@ //! Module managing the Duniter blockchain. #![cfg_attr(feature = "strict", deny(warnings))] -#![cfg_attr( - feature = "cargo-clippy", - allow(unused_collect, duration_subsec) -)] +#![cfg_attr(feature = "cargo-clippy", allow(unused_collect, duration_subsec))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] @@ -44,7 +35,6 @@ extern crate duniter_message; extern crate duniter_module; extern crate duniter_network; extern crate duniter_wotb; -extern crate rustbreak; extern crate serde; extern crate serde_json; extern crate sqlite; @@ -57,7 +47,6 @@ mod sync; mod ts_parsers; use std::collections::HashMap; -use std::fmt::Debug; use std::ops::Deref; use std::path::PathBuf; use std::str; @@ -86,7 +75,6 @@ use duniter_network::{ use duniter_wotb::data::rusty::RustyWebOfTrust; use duniter_wotb::operations::distance::RustyDistanceCalculator; use duniter_wotb::{NodeId, WebOfTrust}; -use rustbreak::backend::{Backend, FileBackend}; /// The blocks are requested by packet groups. This constant sets the block packet size. pub static CHUNK_SIZE: &'static u32 = &50; @@ -113,7 +101,7 @@ pub struct BlockchainModule { /// Blocks Databases pub blocks_databases: BlocksV10DBs, /// Currency databases - currency_databases: CurrencyV10DBs<FileBackend>, + currency_databases: CurrencyV10DBs, /// The block under construction pub pending_block: Option<Box<BlockDocument>>, /// Current state of all forks @@ -165,9 +153,9 @@ impl BlockchainModule { let db_path = duniter_conf::get_blockchain_db_path(profile, &conf.currency()); // Open databases - let blocks_databases = BlocksV10DBs::open(&db_path, false); - let wot_databases = WotsV10DBs::open(&db_path, false); - let currency_databases = CurrencyV10DBs::<FileBackend>::open(&db_path); + let blocks_databases = BlocksV10DBs::open(Some(&db_path)); + let wot_databases = WotsV10DBs::open(Some(&db_path)); + let currency_databases = CurrencyV10DBs::open(Some(&db_path)); // Get current blockstamp let current_blockstamp = duniter_dal::block::get_current_blockstamp(&blocks_databases) @@ -306,12 +294,12 @@ impl BlockchainModule { } } } - fn receive_network_documents<W: WebOfTrust, B: Backend + Debug>( + fn receive_network_documents<W: WebOfTrust>( &mut self, network_documents: &[NetworkDocument], current_blockstamp: &Blockstamp, wotb_index: &mut HashMap<PubKey, NodeId>, - wot_db: &BinDB<W, B>, + wot_db: &BinDB<W>, ) -> Blockstamp { let mut blockchain_documents = Vec::new(); let mut current_blockstamp = *current_blockstamp; @@ -321,7 +309,7 @@ impl BlockchainModule { for network_document in network_documents { match *network_document { NetworkDocument::Block(ref network_block) => { - match check_and_apply_block( + match check_and_apply_block::<W>( &self.blocks_databases, &self.wot_databases.certs_db, &Block::NetworkBlock(network_block), @@ -446,12 +434,12 @@ impl BlockchainModule { } } } - fn receive_blocks<W: WebOfTrust, B: Backend + Debug>( + fn receive_blocks<W: WebOfTrust>( &mut self, blocks_in_box: &[Box<NetworkBlock>], current_blockstamp: &Blockstamp, wotb_index: &mut HashMap<PubKey, NodeId>, - wot: &BinDB<W, B>, + wot: &BinDB<W>, ) -> Blockstamp { debug!("BlockchainModule : receive_blocks()"); let blocks: Vec<&NetworkBlock> = blocks_in_box.into_iter().map(|b| b.deref()).collect(); @@ -461,7 +449,7 @@ impl BlockchainModule { let mut save_currency_dbs = false; for block in blocks { if let Ok(ValidBlockApplyReqs(bc_db_query, wot_dbs_queries, tx_dbs_queries)) = - check_and_apply_block::<W, B>( + check_and_apply_block::<W>( &self.blocks_databases, &self.wot_databases.certs_db, &Block::NetworkBlock(block), @@ -528,7 +516,7 @@ impl BlockchainModule { .expect("Fatal eror : get_wotb_index : Fail to read blockchain databases"); // Open wot file - let wot_db = open_wot_db::<RustyWebOfTrust>(&dbs_path).expect("Fail to open WotDB !"); + let wot_db = open_wot_db::<RustyWebOfTrust>(Some(&dbs_path)).expect("Fail to open WotDB !"); // Get current block let mut current_blockstamp = duniter_dal::block::get_current_blockstamp( diff --git a/blockchain/revert_block.rs b/blockchain/revert_block.rs index 497b5320f982d7d6293f4dd1978fe1039b5a099a..4ac1e0f48bebd0cfdfc1ade1033dd60e41e271cc 100644 --- a/blockchain/revert_block.rs +++ b/blockchain/revert_block.rs @@ -24,9 +24,7 @@ use duniter_documents::blockchain::v10::documents::transaction::{TxAmount, TxBas use duniter_documents::blockchain::Document; use duniter_wotb::data::{NewLinkResult, RemLinkResult}; use duniter_wotb::{NodeId, WebOfTrust}; -use rustbreak::backend::Backend; use std::collections::HashMap; -use std::fmt::Debug; #[derive(Debug)] /// Stores all queries to apply in database to "apply" the block @@ -43,10 +41,10 @@ pub enum RevertValidBlockError { RevokeUnknowNodeId(), } -pub fn revert_block<W: WebOfTrust, B: Backend + Debug>( +pub fn revert_block<W: WebOfTrust>( dal_block: &DALBlock, wot_index: &mut HashMap<PubKey, NodeId>, - wot_db: &BinDB<W, B>, + wot_db: &BinDB<W>, to_fork_id: Option<ForkId>, txs: &TxV10Datas, ) -> Result<ValidBlockRevertReqs, RevertValidBlockError> { diff --git a/blockchain/sync.rs b/blockchain/sync.rs index 3c42f95b32e3a9137fe699001d54bdd8d5e28725..d2ba4d32ef2411c69e907863c0f17948d49c04ad 100644 --- a/blockchain/sync.rs +++ b/blockchain/sync.rs @@ -27,7 +27,6 @@ use duniter_dal::ForkId; use duniter_documents::{BlockHash, BlockId, Hash}; use duniter_network::NetworkBlock; use duniter_wotb::NodeId; -use rustbreak::{deser::Bincode, MemoryDatabase}; use std::collections::{HashMap, VecDeque}; use std::fs; use std::ops::Deref; @@ -157,7 +156,7 @@ pub fn sync_ts<DC: DuniterConf>( // Get current local blockstamp debug!("Get local current blockstamp..."); let db_path = duniter_conf::get_blockchain_db_path(&profile_copy, ¤cy); - let blocks_databases = BlocksV10DBs::open(&db_path, false); + let blocks_databases = BlocksV10DBs::open(Some(&db_path)); let current_blockstamp: Blockstamp = duniter_dal::block::get_current_blockstamp( &blocks_databases, ).expect("ForksV10DB : RustBreakError !") @@ -258,10 +257,10 @@ pub fn sync_ts<DC: DuniterConf>( duniter_conf::write_conf_file(profile, &conf).expect("Fail to write new conf !"); // Open wot db - let wot_db = open_wot_db::<RustyWebOfTrust>(&db_path).expect("Fail to open WotDB !"); + let wot_db = open_wot_db::<RustyWebOfTrust>(Some(&db_path)).expect("Fail to open WotDB !"); // Open blocks databases - let databases = BlocksV10DBs::open(&db_path, false); + let databases = BlocksV10DBs::open(Some(&db_path)); // Get local current blockstamp debug!("Get local current blockstamp..."); @@ -401,7 +400,7 @@ pub fn sync_ts<DC: DuniterConf>( let wot_job_begin = SystemTime::now(); // Open databases let db_path = duniter_conf::get_blockchain_db_path(&profile_copy2, ¤cy_copy2); - let databases = WotsV10DBs::open(&db_path, false); + let databases = WotsV10DBs::open(Some(&db_path)); // Listen db requets let mut all_wait_duration = Duration::from_millis(0); @@ -442,7 +441,7 @@ pub fn sync_ts<DC: DuniterConf>( let tx_job_begin = SystemTime::now(); // Open databases let db_path = duniter_conf::get_blockchain_db_path(&profile_copy, ¤cy_copy); - let databases = CurrencyV10DBs::<FileBackend>::open(&db_path); + let databases = CurrencyV10DBs::open(Some(&db_path)); // Listen db requets let mut all_wait_duration = Duration::from_millis(0); @@ -480,8 +479,8 @@ pub fn sync_ts<DC: DuniterConf>( // Apply blocks let mut blocks_not_expiring = VecDeque::with_capacity(200_000); let mut last_block_expiring: isize = -1; - let certs_db = MemoryDatabase::<CertsExpirV10Datas, Bincode>::memory(HashMap::new()) - .expect("Fail to create memory certs_db"); + let certs_db = + BinDB::Mem(open_memory_db::<CertsExpirV10Datas>().expect("Fail to create memory certs_db")); let mut currency_params = CurrencyParameters::default(); let mut get_currency_params = false; let mut certs_count = 0; @@ -534,7 +533,7 @@ pub fn sync_ts<DC: DuniterConf>( // Apply block let apply_valid_block_begin = SystemTime::now(); if let Ok(ValidBlockApplyReqs(block_req, wot_db_reqs, currency_db_reqs)) = - apply_valid_block::<RustyWebOfTrust, FileBackend>( + apply_valid_block::<RustyWebOfTrust>( &block_doc, &mut wotb_index, &wot_db, diff --git a/conf/lib.rs b/conf/lib.rs index 7ebf86f278e7d2eb19d43fd89d21dc18b257d291..5964847e219113abbb896aa2c16aba2000985f60 100644 --- a/conf/lib.rs +++ b/conf/lib.rs @@ -18,14 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/core/lib.rs b/core/lib.rs index c4e2d0911c24e24f0b46692118efa8f61baecec2..fcbe70d09e13446a0a4b3d8e5632c4f3dda9199f 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -18,14 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/crypto/lib.rs b/crypto/lib.rs index c05b5fc79217ec29b634dc90fa6a851124c2d55a..5f43cce266558af94012e3305a84eed8dc2eb16d 100644 --- a/crypto/lib.rs +++ b/crypto/lib.rs @@ -17,14 +17,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/dal/balance.rs b/dal/balance.rs index 242fe2817709404d14099192b2d61e06ba4274f2..0852960c41981a82348af8bb3ace8b103eecf002 100644 --- a/dal/balance.rs +++ b/dal/balance.rs @@ -18,7 +18,7 @@ use *; /// Get address balance pub fn get_address_balance( - balances_db: &BinFileDB<BalancesV10Datas>, + balances_db: &BinDB<BalancesV10Datas>, address: &UTXOConditionsGroup, ) -> Result<Option<SourceAmount>, DALError> { Ok(balances_db.read(|db| { diff --git a/dal/block.rs b/dal/block.rs index 42a5f756893b20b07d13ea757ed25115af640b36..532aa9f3bf5bea74d150d03b7d036e8360ba4af5 100644 --- a/dal/block.rs +++ b/dal/block.rs @@ -13,9 +13,6 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. -extern crate rustbreak; -extern crate serde; - use super::constants::MAX_FORKS; use duniter_crypto::keys::*; use duniter_documents::blockchain::v10::documents::BlockDocument; @@ -49,7 +46,7 @@ impl DALBlock { ///Get forks status pub fn get_forks( - forks_db: &BinFileDB<ForksV10Datas>, + forks_db: &BinDB<ForksV10Datas>, current_blockstamp: Blockstamp, ) -> Result<Vec<ForkStatus>, DALError> { Ok(forks_db.read(|forks_db| { @@ -145,7 +142,7 @@ pub fn get_current_blockstamp(blocks_db: &BlocksV10DBs) -> Result<Option<Blockst /// Get block fork id pub fn get_fork_id_of_blockstamp( - forks_blocks_db: &BinFileDB<ForksBlocksV10Datas>, + forks_blocks_db: &BinDB<ForksBlocksV10Datas>, blockstamp: &Blockstamp, ) -> Result<Option<ForkId>, DALError> { Ok(forks_blocks_db.read(|db| { @@ -160,8 +157,8 @@ pub fn get_fork_id_of_blockstamp( impl DALBlock { /// Delete fork pub fn delete_fork( - forks_db: &BinFileDB<ForksV10Datas>, - forks_blocks_db: &BinFileDB<ForksBlocksV10Datas>, + forks_db: &BinDB<ForksV10Datas>, + forks_blocks_db: &BinDB<ForksBlocksV10Datas>, fork_id: ForkId, ) -> Result<(), DALError> { let fork_meta_datas = forks_db @@ -185,7 +182,7 @@ impl DALBlock { } /// Assign fork id to new block pub fn assign_fork_to_new_block( - forks_db: &BinFileDB<ForksV10Datas>, + forks_db: &BinDB<ForksV10Datas>, new_block_previous_blockstamp: &PreviousBlockstamp, new_block_hash: &BlockHash, ) -> Result<(Option<ForkId>, bool), DALError> { @@ -232,7 +229,7 @@ impl DALBlock { } /// Get fork block pub fn get_block_fork( - forks_db: &BinFileDB<ForksV10Datas>, + forks_db: &BinDB<ForksV10Datas>, previous_blockstamp: &PreviousBlockstamp, ) -> Result<Option<ForkId>, DALError> { Ok(forks_db.read(|forks_db| { @@ -246,7 +243,7 @@ impl DALBlock { } /// Get block hash pub fn get_block_hash( - db: &BinFileDB<LocalBlockchainV10Datas>, + db: &BinDB<LocalBlockchainV10Datas>, block_number: BlockId, ) -> Result<Option<BlockHash>, DALError> { Ok(db.read(|db| { @@ -259,8 +256,8 @@ impl DALBlock { } /// Return true if the node already knows this block pub fn already_have_block( - blockchain_db: &BinFileDB<LocalBlockchainV10Datas>, - forks_blocks_db: &BinFileDB<ForksBlocksV10Datas>, + blockchain_db: &BinDB<LocalBlockchainV10Datas>, + forks_blocks_db: &BinDB<ForksBlocksV10Datas>, blockstamp: Blockstamp, ) -> Result<bool, DALError> { let already_have_block = forks_blocks_db.read(|db| db.contains_key(&blockstamp))?; @@ -279,8 +276,8 @@ impl DALBlock { } /// Get stackables blocks pub fn get_stackables_blocks( - forks_db: &BinFileDB<ForksV10Datas>, - forks_blocks_db: &BinFileDB<ForksBlocksV10Datas>, + forks_db: &BinDB<ForksV10Datas>, + forks_blocks_db: &BinDB<ForksBlocksV10Datas>, current_blockstamp: &Blockstamp, ) -> Result<Vec<DALBlock>, DALError> { debug!("get_stackables_blocks() after {}", current_blockstamp); @@ -309,7 +306,7 @@ impl DALBlock { } /// Get stackables forks pub fn get_stackables_forks( - db: &BinFileDB<ForksV10Datas>, + db: &BinDB<ForksV10Datas>, current_blockstamp: &Blockstamp, ) -> Result<Vec<usize>, DALError> { Ok(db.read(|db| { @@ -326,8 +323,8 @@ impl DALBlock { } /// Get block pub fn get_block( - blockchain_db: &BinFileDB<LocalBlockchainV10Datas>, - forks_blocks_db: Option<&BinFileDB<ForksBlocksV10Datas>>, + blockchain_db: &BinDB<LocalBlockchainV10Datas>, + forks_blocks_db: Option<&BinDB<ForksBlocksV10Datas>>, blockstamp: &Blockstamp, ) -> Result<Option<DALBlock>, DALError> { let dal_block = blockchain_db.read(|db| db.get(&blockstamp.id).cloned())?; @@ -341,7 +338,7 @@ impl DALBlock { } /// Get block in local blockchain pub fn get_block_in_local_blockchain( - db: &BinFileDB<LocalBlockchainV10Datas>, + db: &BinDB<LocalBlockchainV10Datas>, block_id: BlockId, ) -> Result<Option<BlockDocument>, DALError> { Ok(db.read(|db| { @@ -355,7 +352,7 @@ impl DALBlock { /// Get current frame of calculating members pub fn get_current_frame( &self, - db: &BinFileDB<LocalBlockchainV10Datas>, + db: &BinDB<LocalBlockchainV10Datas>, ) -> Result<HashMap<PubKey, usize>, DALError> { let frame_begin = self.block.number.0 - self.block.issuers_frame as u32; Ok(db.read(|db| { @@ -378,7 +375,7 @@ impl DALBlock { })?) } /// Compute median issuers frame - pub fn compute_median_issuers_frame(&mut self, db: &BinFileDB<LocalBlockchainV10Datas>) -> () { + pub fn compute_median_issuers_frame(&mut self, db: &BinDB<LocalBlockchainV10Datas>) -> () { let current_frame = self .get_current_frame(db) .expect("Fatal error : fail to read LocalBlockchainV10DB !"); diff --git a/dal/certs.rs b/dal/certs.rs index 96269f2018d8d0aa3a50b3c2904972d0b8bc63a3..fea1325eb231a1a775bffc6f13d48ac71eff17d0 100644 --- a/dal/certs.rs +++ b/dal/certs.rs @@ -18,14 +18,12 @@ extern crate duniter_wotb; use duniter_documents::BlockId; use duniter_wotb::NodeId; -use rustbreak::backend::Backend; use std::collections::HashMap; -use std::fmt::Debug; use {BinDB, CertsExpirV10Datas, DALError}; /// Find certifications that emitted in indicated blocks expiring -pub fn find_expire_certs<B: Backend + Debug>( - certs_db: &BinDB<CertsExpirV10Datas, B>, +pub fn find_expire_certs( + certs_db: &BinDB<CertsExpirV10Datas>, blocks_expiring: Vec<BlockId>, ) -> Result<HashMap<(NodeId, NodeId), BlockId>, DALError> { Ok(certs_db.read(|db| { diff --git a/dal/currency_params.rs b/dal/currency_params.rs index daf0332aa9e509a02e3457138dc6afa198f5f0b3..77fb3f8175428a5464ff237c09a15971918cfa03 100644 --- a/dal/currency_params.rs +++ b/dal/currency_params.rs @@ -140,7 +140,7 @@ impl CurrencyParameters { /// Get currency parameters pub fn get_currency_params( - blockchain_db: &BinFileDB<LocalBlockchainV10Datas>, + blockchain_db: &BinDB<LocalBlockchainV10Datas>, ) -> Result<Option<CurrencyParameters>, DALError> { Ok(blockchain_db.read(|db| { if let Some(genesis_block) = db.get(&BlockId(0)) { diff --git a/dal/identity.rs b/dal/identity.rs index 268fd90df0543445a474b3ef5c651ea76df60b65..c2af1aca008d66967f1ecb330c539bb596949234 100644 --- a/dal/identity.rs +++ b/dal/identity.rs @@ -18,9 +18,7 @@ use duniter_crypto::keys::*; use duniter_documents::blockchain::v10::documents::IdentityDocument; use duniter_documents::{BlockId, Blockstamp}; use duniter_wotb::NodeId; -use rustbreak::backend::Backend; use std::collections::HashMap; -use std::fmt::Debug; use {BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas}; #[derive(Clone, Debug, Deserialize, Serialize)] @@ -64,8 +62,8 @@ pub struct DALIdentity { } /// Get uid from pubkey -pub fn get_uid<B: Backend + Debug>( - identities_db: &BinDB<IdentitiesV10Datas, B>, +pub fn get_uid( + identities_db: &BinDB<IdentitiesV10Datas>, pubkey: PubKey, ) -> Result<Option<String>, DALError> { Ok(identities_db.read(|db| { @@ -78,8 +76,8 @@ pub fn get_uid<B: Backend + Debug>( } /// Get pubkey from uid -pub fn get_pubkey_from_uid<B: Backend + Debug>( - identities_db: &BinDB<IdentitiesV10Datas, B>, +pub fn get_pubkey_from_uid( + identities_db: &BinDB<IdentitiesV10Datas>, uid: &str, ) -> Result<Option<PubKey>, DALError> { Ok(identities_db.read(|db| { @@ -94,8 +92,8 @@ pub fn get_pubkey_from_uid<B: Backend + Debug>( impl DALIdentity { /// Apply "exclude identity" event - pub fn exclude_identity<B: Backend + Debug>( - identities_db: &BinDB<IdentitiesV10Datas, B>, + pub fn exclude_identity( + identities_db: &BinDB<IdentitiesV10Datas>, pubkey: &PubKey, exclusion_blockstamp: &Blockstamp, revert: bool, @@ -131,8 +129,8 @@ impl DALIdentity { } /// Get wot_id index - pub fn get_wotb_index<B: Backend + Debug>( - identities_db: &BinDB<IdentitiesV10Datas, B>, + pub fn get_wotb_index( + identities_db: &BinDB<IdentitiesV10Datas>, ) -> Result<HashMap<PubKey, NodeId>, DALError> { Ok(identities_db.read(|db| { let mut wotb_index: HashMap<PubKey, NodeId> = HashMap::new(); @@ -145,8 +143,8 @@ impl DALIdentity { } /// Apply "revoke identity" event - pub fn revoke_identity<B: Backend + Debug>( - identities_db: &BinDB<IdentitiesV10Datas, B>, + pub fn revoke_identity( + identities_db: &BinDB<IdentitiesV10Datas>, pubkey: &PubKey, renewal_blockstamp: &Blockstamp, explicit: bool, @@ -193,11 +191,11 @@ impl DALIdentity { } /// Apply "renewal identity" event in databases - pub fn renewal_identity<B: Backend + Debug>( + pub fn renewal_identity( &mut self, currency_params: &CurrencyParameters, - identities_db: &BinDB<IdentitiesV10Datas, B>, - ms_db: &BinDB<MsExpirV10Datas, B>, + identities_db: &BinDB<IdentitiesV10Datas>, + ms_db: &BinDB<MsExpirV10Datas>, pubkey: &PubKey, idty_wot_id: NodeId, renewal_timestamp: u64, @@ -259,10 +257,7 @@ impl DALIdentity { } /// Remove identity from databases - pub fn remove_identity<B: Backend + Debug>( - db: &BinDB<IdentitiesV10Datas, B>, - pubkey: PubKey, - ) -> Result<(), DALError> { + pub fn remove_identity(db: &BinDB<IdentitiesV10Datas>, pubkey: PubKey) -> Result<(), DALError> { db.write(|db| { db.remove(&pubkey); })?; @@ -270,8 +265,8 @@ impl DALIdentity { } /// Get identity in databases - pub fn get_identity<B: Backend + Debug>( - db: &BinDB<IdentitiesV10Datas, B>, + pub fn get_identity( + db: &BinDB<IdentitiesV10Datas>, pubkey: &PubKey, ) -> Result<Option<DALIdentity>, DALError> { Ok(db.read(|db| { diff --git a/dal/lib.rs b/dal/lib.rs index 6eba641596e485ac02e499cb3a981f3bfd747abf..bd82d6b27ee3b10db4e5ee3e9c2694cca8e690d0 100644 --- a/dal/lib.rs +++ b/dal/lib.rs @@ -19,14 +19,8 @@ #![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![cfg_attr(feature = "exp", allow(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] @@ -84,7 +78,7 @@ use duniter_documents::blockchain::v10::documents::block::{BlockV10Parameters, C use duniter_documents::blockchain::v10::documents::transaction::*; use duniter_documents::{BlockHash, BlockId, Blockstamp, Hash, PreviousBlockstamp}; use duniter_wotb::{NodeId, WebOfTrust}; -use rustbreak::backend::{Backend, FileBackend, MemoryBackend}; +use rustbreak::backend::{FileBackend, MemoryBackend}; use rustbreak::error::{RustbreakError, RustbreakErrorKind}; use rustbreak::{deser::Bincode, Database, FileDatabase, MemoryDatabase}; use serde::de::DeserializeOwned; @@ -93,6 +87,7 @@ use std::collections::{HashMap, HashSet}; use std::default::Default; use std::fmt::Debug; use std::fs; +use std::panic::UnwindSafe; use std::path::PathBuf; use block::DALBlock; @@ -127,37 +122,109 @@ pub type UDsV10Datas = HashMap<PubKey, HashSet<BlockId>>; /// V10 Balances accounts pub type BalancesV10Datas = HashMap<UTXOConditionsGroup, (SourceAmount, HashSet<UTXOIndexV10>)>; -/// Binary Database -pub type BinDB<D, B> = Database<D, B, Bincode>; -/// Binary File Database -pub type BinFileDB<D> = FileDatabase<D, Bincode>; -/// Binary Memory Database -pub type BinMemDB<D> = MemoryDatabase<D, Bincode>; +#[derive(Debug)] +/// Database +pub enum BinDB<D: Serialize + DeserializeOwned + Debug + Default + Clone + Send> { + /// File database + File(Database<D, FileBackend, Bincode>), + /// Memory database + Mem(Database<D, MemoryBackend, Bincode>), +} + +impl<D: Serialize + DeserializeOwned + Debug + Default + Clone + Send> BinDB<D> { + /// Flush the data structure to the backend + pub fn save(&self) -> Result<(), RustbreakError> { + match *self { + BinDB::File(ref file_db) => file_db.save(), + BinDB::Mem(ref mem_db) => mem_db.save(), + } + } + /// Read lock the database and get write access to the Data container + /// This gives you a read-only lock on the database. You can have as many readers in parallel as you wish. + pub fn read<T, R>(&self, task: T) -> Result<R, RustbreakError> + where + T: FnOnce(&D) -> R, + { + match *self { + BinDB::File(ref file_db) => file_db.read(task), + BinDB::Mem(ref mem_db) => mem_db.read(task), + } + } + /// Write lock the database and get write access to the Data container + /// This gives you an exclusive lock on the memory object. Trying to open the database in writing will block if it is currently being written to. + pub fn write<T>(&self, task: T) -> Result<(), RustbreakError> + where + T: FnOnce(&mut D) -> (), + { + match *self { + BinDB::File(ref file_db) => file_db.write(task), + BinDB::Mem(ref mem_db) => mem_db.write(task), + } + } + /// Write lock the database and get write access to the Data container in a safe way (clone of the internal data is made). + pub fn write_safe<T>(&self, task: T) -> Result<(), RustbreakError> + where + T: FnOnce(&mut D) -> () + UnwindSafe, + { + match *self { + BinDB::File(ref file_db) => file_db.write_safe(task), + BinDB::Mem(ref mem_db) => mem_db.write_safe(task), + } + } + /// Load the Data from the backend + pub fn load(&self) -> Result<(), RustbreakError> { + match *self { + BinDB::File(ref file_db) => file_db.load(), + BinDB::Mem(ref mem_db) => mem_db.load(), + } + } +} #[derive(Debug)] /// Set of databases storing block information pub struct BlocksV10DBs { /// Local blockchain database - pub blockchain_db: BinFileDB<LocalBlockchainV10Datas>, + pub blockchain_db: BinDB<LocalBlockchainV10Datas>, /// Forks meta datas - pub forks_db: BinFileDB<ForksV10Datas>, + pub forks_db: BinDB<ForksV10Datas>, /// Forks blocks - pub forks_blocks_db: BinFileDB<ForksBlocksV10Datas>, + pub forks_blocks_db: BinDB<ForksBlocksV10Datas>, } impl BlocksV10DBs { /// Open blocks databases from their respective files - pub fn open(db_path: &PathBuf, _memory_mode: bool) -> BlocksV10DBs { - BlocksV10DBs { - blockchain_db: open_db::<LocalBlockchainV10Datas>(&db_path, "blockchain.db") - .expect("Fail to open LocalBlockchainV10DB"), - forks_db: open_db::<ForksV10Datas>(&db_path, "forks.db") - .expect("Fail to open ForksV10DB"), - forks_blocks_db: open_db::<ForksBlocksV10Datas>(&db_path, "forks_blocks.db") - .expect("Fail to open ForksBlocksV10DB"), + pub fn open(db_path: Option<&PathBuf>) -> BlocksV10DBs { + if let Some(db_path) = db_path { + BlocksV10DBs { + blockchain_db: BinDB::File( + open_db::<LocalBlockchainV10Datas>(&db_path, "blockchain.db") + .expect("Fail to open LocalBlockchainV10DB"), + ), + forks_db: BinDB::File( + open_db::<ForksV10Datas>(&db_path, "forks.db") + .expect("Fail to open ForksV10DB"), + ), + forks_blocks_db: BinDB::File( + open_db::<ForksBlocksV10Datas>(&db_path, "forks_blocks.db") + .expect("Fail to open ForksBlocksV10DB"), + ), + } + } else { + BlocksV10DBs { + blockchain_db: BinDB::Mem( + open_memory_db::<LocalBlockchainV10Datas>() + .expect("Fail to open LocalBlockchainV10DB"), + ), + forks_db: BinDB::Mem( + open_memory_db::<ForksV10Datas>().expect("Fail to open ForksV10DB"), + ), + forks_blocks_db: BinDB::Mem( + open_memory_db::<ForksBlocksV10Datas>().expect("Fail to open ForksBlocksV10DB"), + ), + } } } - /// Open blocks databases from their respective files + /// Save blocks databases in their respective files pub fn save_dbs(&self) { self.blockchain_db .save() @@ -175,23 +242,43 @@ impl BlocksV10DBs { /// Set of databases storing web of trust information pub struct WotsV10DBs { /// Store iedntities - pub identities_db: BinFileDB<IdentitiesV10Datas>, + pub identities_db: BinDB<IdentitiesV10Datas>, /// Store memberships created_block_id (Use only to detect expirations) - pub ms_db: BinFileDB<MsExpirV10Datas>, + pub ms_db: BinDB<MsExpirV10Datas>, /// Store certifications created_block_id (Use only to detect expirations) - pub certs_db: BinFileDB<CertsExpirV10Datas>, + pub certs_db: BinDB<CertsExpirV10Datas>, } impl WotsV10DBs { /// Open wot databases from their respective files - pub fn open(db_path: &PathBuf, _memory_mode: bool) -> WotsV10DBs { - WotsV10DBs { - identities_db: open_db::<IdentitiesV10Datas>(&db_path, "identities.db") - .expect("Fail to open IdentitiesV10DB"), - ms_db: open_db::<MsExpirV10Datas>(&db_path, "ms.db") - .expect("Fail to open MsExpirV10DB"), - certs_db: open_db::<CertsExpirV10Datas>(&db_path, "certs.db") - .expect("Fail to open CertsExpirV10DB"), + pub fn open(db_path: Option<&PathBuf>) -> WotsV10DBs { + if let Some(db_path) = db_path { + WotsV10DBs { + identities_db: BinDB::File( + open_db::<IdentitiesV10Datas>(&db_path, "identities.db") + .expect("Fail to open IdentitiesV10DB"), + ), + ms_db: BinDB::File( + open_db::<MsExpirV10Datas>(&db_path, "ms.db") + .expect("Fail to open MsExpirV10DB"), + ), + certs_db: BinDB::File( + open_db::<CertsExpirV10Datas>(&db_path, "certs.db") + .expect("Fail to open CertsExpirV10DB"), + ), + } + } else { + WotsV10DBs { + identities_db: BinDB::Mem( + open_memory_db::<IdentitiesV10Datas>().expect("Fail to open IdentitiesV10DB"), + ), + ms_db: BinDB::Mem( + open_memory_db::<MsExpirV10Datas>().expect("Fail to open MsExpirV10DB"), + ), + certs_db: BinDB::Mem( + open_memory_db::<CertsExpirV10Datas>().expect("Fail to open CertsExpirV10DB"), + ), + } } } /// Save wot databases from their respective files @@ -210,40 +297,50 @@ impl WotsV10DBs { #[derive(Debug)] /// Set of databases storing currency information -pub struct CurrencyV10DBs<B: Backend + Debug> { +pub struct CurrencyV10DBs { /// Store all UD sources - pub du_db: BinDB<UDsV10Datas, B>, + pub du_db: BinDB<UDsV10Datas>, /// Store all Transactions - pub tx_db: BinDB<TxV10Datas, B>, + pub tx_db: BinDB<TxV10Datas>, /// Store all UTXOs - pub utxos_db: BinDB<UTXOsV10Datas, B>, + pub utxos_db: BinDB<UTXOsV10Datas>, /// Store balances of all address (and theirs UTXOs indexs) - pub balances_db: BinDB<BalancesV10Datas, B>, + pub balances_db: BinDB<BalancesV10Datas>, } -impl CurrencyV10DBs<MemoryBackend> { - /// Open currency databases in memory mode - pub fn open_memory_mode() -> CurrencyV10DBs<MemoryBackend> { - CurrencyV10DBs { - du_db: open_memory_db::<UDsV10Datas>().expect("Fail to open UDsV10DB"), - tx_db: open_memory_db::<TxV10Datas>().expect("Fail to open TxV10DB"), - utxos_db: open_memory_db::<UTXOsV10Datas>().expect("Fail to open UTXOsV10DB"), - balances_db: open_memory_db::<BalancesV10Datas>().expect("Fail to open BalancesV10DB"), - } - } -} - -impl CurrencyV10DBs<FileBackend> { +impl CurrencyV10DBs { /// Open currency databases from their respective files - pub fn open(db_path: &PathBuf) -> CurrencyV10DBs<FileBackend> { - CurrencyV10DBs { - du_db: open_db::<UDsV10Datas>(&db_path, "du.db").expect("Fail to open UDsV10DB"), - tx_db: open_db::<TxV10Datas>(&db_path, "tx.db") - .unwrap_or_else(|_| panic!("Fail to open TxV10DB : {:?} ", db_path.as_path())), - utxos_db: open_db::<UTXOsV10Datas>(&db_path, "sources.db") - .expect("Fail to open UTXOsV10DB"), - balances_db: open_db::<BalancesV10Datas>(&db_path, "balances.db") - .expect("Fail to open BalancesV10DB"), + pub fn open(db_path: Option<&PathBuf>) -> CurrencyV10DBs { + if let Some(db_path) = db_path { + CurrencyV10DBs { + du_db: BinDB::File( + open_db::<UDsV10Datas>(&db_path, "du.db").expect("Fail to open UDsV10DB"), + ), + tx_db: BinDB::File( + open_db::<TxV10Datas>(&db_path, "tx.db").unwrap_or_else(|_| { + panic!("Fail to open TxV10DB : {:?} ", db_path.as_path()) + }), + ), + utxos_db: BinDB::File( + open_db::<UTXOsV10Datas>(&db_path, "sources.db") + .expect("Fail to open UTXOsV10DB"), + ), + balances_db: BinDB::File( + open_db::<BalancesV10Datas>(&db_path, "balances.db") + .expect("Fail to open BalancesV10DB"), + ), + } + } else { + CurrencyV10DBs { + du_db: BinDB::Mem(open_memory_db::<UDsV10Datas>().expect("Fail to open UDsV10DB")), + tx_db: BinDB::Mem(open_memory_db::<TxV10Datas>().expect("Fail to open TxV10DB")), + utxos_db: BinDB::Mem( + open_memory_db::<UTXOsV10Datas>().expect("Fail to open UTXOsV10DB"), + ), + balances_db: BinDB::Mem( + open_memory_db::<BalancesV10Datas>().expect("Fail to open BalancesV10DB"), + ), + } } } /// Save currency databases in their respective files @@ -341,7 +438,7 @@ fn _use_json_macro() -> serde_json::Value { /// Open Rustbreak memory database pub fn open_memory_db<D: Serialize + DeserializeOwned + Debug + Default + Clone + Send>( -) -> Result<BinMemDB<D>, DALError> { +) -> Result<MemoryDatabase<D, Bincode>, DALError> { let backend = MemoryBackend::new(); let db = MemoryDatabase::<D, Bincode>::from_parts(D::default(), backend, Bincode); Ok(db) @@ -351,7 +448,7 @@ pub fn open_memory_db<D: Serialize + DeserializeOwned + Debug + Default + Clone pub fn open_db<D: Serialize + DeserializeOwned + Debug + Default + Clone + Send>( dbs_folder_path: &PathBuf, db_file_name: &str, -) -> Result<BinFileDB<D>, DALError> { +) -> Result<FileDatabase<D, Bincode>, DALError> { let mut db_path = dbs_folder_path.clone(); db_path.push(db_file_name); let file_path = db_path.as_path(); @@ -373,8 +470,12 @@ pub fn open_db<D: Serialize + DeserializeOwned + Debug + Default + Clone + Send> } /// Open wot db (cf. duniter-wot crate) -pub fn open_wot_db<W: WebOfTrust>(dbs_folder_path: &PathBuf) -> Result<BinFileDB<W>, DALError> { - open_db::<W>(dbs_folder_path, "wot.db") +pub fn open_wot_db<W: WebOfTrust>(dbs_folder_path: Option<&PathBuf>) -> Result<BinDB<W>, DALError> { + if let Some(dbs_folder_path) = dbs_folder_path { + Ok(BinDB::File(open_db::<W>(dbs_folder_path, "wot.db")?)) + } else { + Ok(BinDB::Mem(open_memory_db::<W>()?)) + } } // Open wot file (cf. duniter-wot crate) diff --git a/dal/writers/block.rs b/dal/writers/block.rs index 5ad567c1be3922b0cf5aaa04d72f365ce1c302dd..d447ad41666b55d09ebb301e736b9c21a422b59a 100644 --- a/dal/writers/block.rs +++ b/dal/writers/block.rs @@ -18,13 +18,13 @@ use duniter_documents::blockchain::Document; use duniter_documents::{BlockHash, BlockId, PreviousBlockstamp}; use std::collections::HashMap; use ForkId; -use {BinFileDB, DALError, ForksBlocksV10Datas, ForksV10Datas, LocalBlockchainV10Datas}; +use {BinDB, DALError, ForksBlocksV10Datas, ForksV10Datas, LocalBlockchainV10Datas}; /// Write DALBlock in databases pub fn write( - blockchain_db: &BinFileDB<LocalBlockchainV10Datas>, - forks_db: &BinFileDB<ForksV10Datas>, - forks_blocks_db: &BinFileDB<ForksBlocksV10Datas>, + blockchain_db: &BinDB<LocalBlockchainV10Datas>, + forks_db: &BinDB<ForksV10Datas>, + forks_blocks_db: &BinDB<ForksBlocksV10Datas>, dal_block: &DALBlock, from_to_fork_id: Option<ForkId>, sync: bool, diff --git a/dal/writers/certification.rs b/dal/writers/certification.rs index 2f8ebf5882fdefb77b36776118f1077d45e979a0..7ac57ac1629e482421a79568f1c4edbf734b4d33 100644 --- a/dal/writers/certification.rs +++ b/dal/writers/certification.rs @@ -21,13 +21,13 @@ use duniter_crypto::keys::*; use duniter_documents::blockchain::v10::documents::certification::CompactCertificationDocument; use duniter_documents::BlockId; use duniter_wotb::NodeId; -use {BinFileDB, CertsExpirV10Datas, DALError, IdentitiesV10Datas}; +use {BinDB, CertsExpirV10Datas, DALError, IdentitiesV10Datas}; /// Apply "certification" event in databases pub fn write_certification( currency_params: &CurrencyParameters, - identities_db: &BinFileDB<IdentitiesV10Datas>, - certs_db: &BinFileDB<CertsExpirV10Datas>, + identities_db: &BinDB<IdentitiesV10Datas>, + certs_db: &BinDB<CertsExpirV10Datas>, source_pubkey: PubKey, source: NodeId, target: NodeId, @@ -59,8 +59,8 @@ pub fn write_certification( /// Revert writtent certification pub fn revert_write_cert( - identities_db: &BinFileDB<IdentitiesV10Datas>, - certs_db: &BinFileDB<CertsExpirV10Datas>, + identities_db: &BinDB<IdentitiesV10Datas>, + certs_db: &BinDB<CertsExpirV10Datas>, compact_doc: CompactCertificationDocument, source: NodeId, target: NodeId, @@ -86,7 +86,7 @@ pub fn revert_write_cert( /// Revert "certification expiry" event in databases pub fn revert_expire_cert( - certs_db: &BinFileDB<CertsExpirV10Datas>, + certs_db: &BinDB<CertsExpirV10Datas>, source: NodeId, target: NodeId, created_block_id: BlockId, @@ -102,7 +102,7 @@ pub fn revert_expire_cert( /// Apply "certification expiry" event in databases pub fn expire_certs( - certs_db: &BinFileDB<CertsExpirV10Datas>, + certs_db: &BinDB<CertsExpirV10Datas>, created_block_id: BlockId, ) -> Result<(), DALError> { // Remove CertsExpirV10Datas entries diff --git a/dal/writers/dividend.rs b/dal/writers/dividend.rs index a0add7d7417298b27345706c1866412c13ca9908..fb9899b231aa5492ac1344d7ca6a749794b0905e 100644 --- a/dal/writers/dividend.rs +++ b/dal/writers/dividend.rs @@ -16,16 +16,14 @@ use duniter_crypto::keys::PubKey; use duniter_documents::blockchain::v10::documents::transaction::*; use duniter_documents::BlockId; -use rustbreak::backend::Backend; use sources::SourceAmount; use std::collections::{HashMap, HashSet}; -use std::fmt::Debug; use *; /// Apply UD creation in databases -pub fn create_du<B: Backend + Debug>( - du_db: &BinDB<UDsV10Datas, B>, - balances_db: &BinDB<BalancesV10Datas, B>, +pub fn create_du( + du_db: &BinDB<UDsV10Datas>, + balances_db: &BinDB<BalancesV10Datas>, du_amount: &SourceAmount, du_block_id: BlockId, members: &[PubKey], diff --git a/dal/writers/identity.rs b/dal/writers/identity.rs index e22d3001d42ae4e77a702c3ed3180d9f2eb12c88..454f3d51b680ba2c8f1d2e519c4cc9a9d6ff9b2b 100644 --- a/dal/writers/identity.rs +++ b/dal/writers/identity.rs @@ -20,12 +20,12 @@ use duniter_documents::blockchain::Document; use duniter_documents::{BlockId, Blockstamp}; use duniter_wotb::NodeId; use identity::{DALIdentity, DALIdentityState}; -use {BinFileDB, DALError, IdentitiesV10Datas, MsExpirV10Datas}; +use {BinDB, DALError, IdentitiesV10Datas, MsExpirV10Datas}; /// Remove identity from databases pub fn revert_create_identity( - identities_db: &BinFileDB<IdentitiesV10Datas>, - ms_db: &BinFileDB<MsExpirV10Datas>, + identities_db: &BinDB<IdentitiesV10Datas>, + ms_db: &BinDB<MsExpirV10Datas>, pubkey: &PubKey, ) -> Result<(), DALError> { let dal_idty = identities_db.read(|db| { @@ -52,8 +52,8 @@ pub fn revert_create_identity( /// Write identity in databases pub fn create_identity( currency_params: &CurrencyParameters, - identities_db: &BinFileDB<IdentitiesV10Datas>, - ms_db: &BinFileDB<MsExpirV10Datas>, + identities_db: &BinDB<IdentitiesV10Datas>, + ms_db: &BinDB<MsExpirV10Datas>, idty_doc: &IdentityDocument, ms_created_block_id: BlockId, wot_id: NodeId, diff --git a/dal/writers/requests.rs b/dal/writers/requests.rs index 7ec4413d9ff8a39ded40e9eb781cb6db81457132..80d0a3fe35519153651aa8b74829ae0ddb8426cb 100644 --- a/dal/writers/requests.rs +++ b/dal/writers/requests.rs @@ -24,9 +24,7 @@ use duniter_documents::blockchain::v10::documents::identity::IdentityDocument; use duniter_documents::Blockstamp; use duniter_wotb::NodeId; use identity::DALIdentity; -use rustbreak::backend::Backend; use sources::SourceAmount; -use std::fmt::Debug; use std::ops::Deref; use writers::transaction::DALTxV10; use *; @@ -276,16 +274,16 @@ pub enum CurrencyDBsWriteQuery { impl CurrencyDBsWriteQuery { /// Apply CurrencyDBsWriteQuery - pub fn apply<B: Backend + Debug>(&self, databases: &CurrencyV10DBs<B>) -> Result<(), DALError> { + pub fn apply(&self, databases: &CurrencyV10DBs) -> Result<(), DALError> { match *self { CurrencyDBsWriteQuery::WriteTx(ref tx_doc) => { - super::transaction::apply_and_write_tx::<B>(&databases, tx_doc.deref())?; + super::transaction::apply_and_write_tx(&databases, tx_doc.deref())?; } CurrencyDBsWriteQuery::RevertTx(ref dal_tx) => { - super::transaction::revert_tx::<B>(&databases, dal_tx.deref())?; + super::transaction::revert_tx(&databases, dal_tx.deref())?; } CurrencyDBsWriteQuery::CreateUD(ref du_amount, ref block_id, ref members) => { - super::dividend::create_du::<B>( + super::dividend::create_du( &databases.du_db, &databases.balances_db, du_amount, @@ -295,7 +293,7 @@ impl CurrencyDBsWriteQuery { )?; } CurrencyDBsWriteQuery::RevertUD(ref du_amount, ref block_id, ref members) => { - super::dividend::create_du::<B>( + super::dividend::create_du( &databases.du_db, &databases.balances_db, du_amount, diff --git a/dal/writers/transaction.rs b/dal/writers/transaction.rs index a1ffc32dcf612709ce76665d3767d6f3f993d5e7..8d0e240d3b468f5517f11374bb03e3024027864b 100644 --- a/dal/writers/transaction.rs +++ b/dal/writers/transaction.rs @@ -14,9 +14,7 @@ // along with this program. If not, see <https://www.gnu.org/licenses/>. use duniter_documents::blockchain::v10::documents::transaction::*; -use rustbreak::backend::Backend; use sources::{SourceAmount, SourceIndexV10, UTXOIndexV10, UTXOV10}; -use std::fmt::Debug; use *; #[derive(Debug, Copy, Clone)] @@ -44,10 +42,7 @@ pub struct DALTxV10 { } /// Apply transaction backwards -pub fn revert_tx<B: Backend + Debug>( - dbs: &CurrencyV10DBs<B>, - dal_tx: &DALTxV10, -) -> Result<(), DALError> { +pub fn revert_tx(dbs: &CurrencyV10DBs, dal_tx: &DALTxV10) -> Result<(), DALError> { let mut tx_doc = dal_tx.tx_doc.clone(); let tx_hash = tx_doc.get_hash(); let sources_destroyed = &dal_tx.sources_destroyed; @@ -242,8 +237,8 @@ pub fn revert_tx<B: Backend + Debug>( } /// Apply and write transaction in databases -pub fn apply_and_write_tx<B: Backend + Debug>( - dbs: &CurrencyV10DBs<B>, +pub fn apply_and_write_tx( + dbs: &CurrencyV10DBs, tx_doc: &TransactionDocument, ) -> Result<(), DALError> { let mut tx_doc = tx_doc.clone(); @@ -470,7 +465,7 @@ mod tests { .unwrap(), ); // Open currencys_db in memory mode - let currency_dbs = CurrencyV10DBs::open_memory_mode(); + let currency_dbs = CurrencyV10DBs::open(None); // Create first g1 UD for cgeek and tortue writers::dividend::create_du( ¤cy_dbs.du_db, diff --git a/documents/lib.rs b/documents/lib.rs index 39f8166116c646e562312b2240d88e38df17e1a1..1ea9914223164135b15c3b245f0ad71d2135ff89 100644 --- a/documents/lib.rs +++ b/documents/lib.rs @@ -18,14 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(unused_collect))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/message/lib.rs b/message/lib.rs index d95c506b5ab2a7b38c1291c0104ad22c17d48ada..1b89f4dc38a45067b16333d1e5b4ace3e468a11f 100644 --- a/message/lib.rs +++ b/message/lib.rs @@ -18,14 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/module/lib.rs b/module/lib.rs index a11db06413dd4726088e093f385be59ba634601e..4ee5ec846307429ce4a4a3f1ca6f24e11fc45f50 100644 --- a/module/lib.rs +++ b/module/lib.rs @@ -19,14 +19,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(implicit_hasher))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/network/lib.rs b/network/lib.rs index 41c066dae134aed4aaf310ad84f83844bce09b75..466f4476365ee92bba234d180f80240d51359130 100644 --- a/network/lib.rs +++ b/network/lib.rs @@ -17,14 +17,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/src/main.rs b/src/main.rs index f275ed88608829d3a46d2b772e71e0df34f5ba37..eacbede7127d6d3001943d637eac47312c4f8c02 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,14 +17,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/tui/lib.rs b/tui/lib.rs index 2c00a948760bef9da8bf28b2868f163346a56ef2..29e0013dd2d717f5690cc2d760108e617d0e62b1 100644 --- a/tui/lib.rs +++ b/tui/lib.rs @@ -18,14 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/wotb/lib.rs b/wotb/lib.rs index 3926037bfc22061f3f942d610f0fc797807c2337..a68352c5b6be9ee1fe94e6bcacead24f6872ae34 100644 --- a/wotb/lib.rs +++ b/wotb/lib.rs @@ -28,14 +28,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![deny( - missing_docs, - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - trivial_numeric_casts, - unsafe_code, - unstable_features, - unused_import_braces, + missing_docs, missing_debug_implementations, missing_copy_implementations, trivial_casts, + trivial_numeric_casts, unsafe_code, unstable_features, unused_import_braces, unused_qualifications )] diff --git a/ws2p/lib.rs b/ws2p/lib.rs index f659c1071061a5dba83da64070d2a712ce7f9a9b..87ccffe675b9d31326eb1fd753e4da216468676d 100644 --- a/ws2p/lib.rs +++ b/ws2p/lib.rs @@ -18,13 +18,8 @@ #![cfg_attr(feature = "strict", deny(warnings))] #![cfg_attr(feature = "cargo-clippy", allow(cyclomatic_complexity))] #![deny( - missing_debug_implementations, - missing_copy_implementations, - trivial_casts, - unsafe_code, - unstable_features, - unused_import_braces, - unused_qualifications + missing_debug_implementations, missing_copy_implementations, trivial_casts, unsafe_code, + unstable_features, unused_import_braces, unused_qualifications )] #![recursion_limit = "256"]