From a056c0dd591af8bb2c34f6d6cf8bed818a231c93 Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Sat, 3 Jul 2021 10:16:02 -0700 Subject: [PATCH] Reorganized code into wallet mod/package --- src/lib.rs | 2 -- src/types.rs | 2 +- src/{ => wallet}/blockchain.rs | 0 src/{ => wallet}/database.rs | 0 src/{wallet.rs => wallet/mod.rs} | 52 ++++++++++++++++++-------------- 5 files changed, 31 insertions(+), 25 deletions(-) rename src/{ => wallet}/blockchain.rs (100%) rename src/{ => wallet}/database.rs (100%) rename src/{wallet.rs => wallet/mod.rs} (96%) diff --git a/src/lib.rs b/src/lib.rs index e1a9c00..21b8266 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,5 @@ #![deny(unsafe_code)] /* No `unsafe` needed! */ -mod blockchain; -mod database; mod error; mod types; mod wallet; diff --git a/src/types.rs b/src/types.rs index 25a1f2a..079e9cd 100644 --- a/src/types.rs +++ b/src/types.rs @@ -27,7 +27,7 @@ fn free_void_result(void_result: FfiResult<()>) { } // TODO do we need this? remove? -/// Frees a Rust-allocated string +/// Free a Rust-allocated string #[ffi_export] fn free_string(string: Option) { drop(string) diff --git a/src/blockchain.rs b/src/wallet/blockchain.rs similarity index 100% rename from src/blockchain.rs rename to src/wallet/blockchain.rs diff --git a/src/database.rs b/src/wallet/database.rs similarity index 100% rename from src/database.rs rename to src/wallet/database.rs diff --git a/src/wallet.rs b/src/wallet/mod.rs similarity index 96% rename from src/wallet.rs rename to src/wallet/mod.rs index b7996dc..300d4c0 100644 --- a/src/wallet.rs +++ b/src/wallet/mod.rs @@ -9,11 +9,17 @@ use bdk::{Error, Wallet}; use safer_ffi::boxed::Box; use safer_ffi::char_p::{char_p_boxed, char_p_ref}; -use crate::blockchain::BlockchainConfig; -use crate::database::DatabaseConfig; +use blockchain::BlockchainConfig; +use database::DatabaseConfig; + use crate::error::get_name; use crate::types::{FfiResult, FfiResultVec}; +mod blockchain; +mod database; + +// create a new wallet + #[derive_ReprC] #[ReprC::opaque] pub struct OpaqueWallet { @@ -45,15 +51,29 @@ fn new_wallet_result( } } +fn new_wallet( + descriptor: String, + change_descriptor: Option, + blockchain_config: &AnyBlockchainConfig, + database_config: &AnyDatabaseConfig, +) -> Result, Error> { + let network = Testnet; + + let client = AnyBlockchain::from_config(blockchain_config)?; + let database = AnyDatabase::from_config(database_config)?; + + let descriptor: &str = descriptor.as_str(); + let change_descriptor: Option<&str> = change_descriptor.as_deref(); + + Wallet::new(descriptor, change_descriptor, network, database, client) +} + #[ffi_export] fn free_wallet_result(wallet_result: FfiResult) { drop(wallet_result); } -#[ffi_export] -fn free_unspent_result(unspent_result: FfiResultVec) { - drop(unspent_result) -} +// wallet operations #[ffi_export] fn sync_wallet(opaque_wallet: &OpaqueWallet) -> FfiResult<()> { @@ -105,24 +125,12 @@ fn list_unspent(opaque_wallet: &OpaqueWallet) -> FfiResultVec { } } -fn new_wallet( - descriptor: String, - change_descriptor: Option, - blockchain_config: &AnyBlockchainConfig, - database_config: &AnyDatabaseConfig, -) -> Result, Error> { - let network = Testnet; - - let client = AnyBlockchain::from_config(blockchain_config)?; - let database = AnyDatabase::from_config(database_config)?; - - let descriptor: &str = descriptor.as_str(); - let change_descriptor: Option<&str> = change_descriptor.as_deref(); - - Wallet::new(descriptor, change_descriptor, network, database, client) +#[ffi_export] +fn free_unspent_result(unspent_result: FfiResultVec) { + drop(unspent_result) } -// Non-opaque returned structs +// Non-opaque returned values #[derive_ReprC] #[repr(C)]