Proper encapsulation of wallet boundaries through private fields

This commit is contained in:
Daniel Karzel 2021-02-25 10:30:24 +11:00
parent 947bcb6192
commit 578d23d7fc
2 changed files with 21 additions and 13 deletions

View File

@ -23,9 +23,9 @@ use url::Url;
#[derive(Debug)]
pub struct Wallet {
pub inner: Mutex<wallet::Client>,
pub network: Network,
pub default_wallet_name: String,
inner: Mutex<wallet::Client>,
network: Network,
default_wallet_name: String,
}
impl Wallet {
@ -37,6 +37,18 @@ impl Wallet {
}
}
pub fn new_with_client(
client: wallet::Client,
network: Network,
default_wallet_name: String,
) -> Self {
Self {
inner: Mutex::new(client),
network,
default_wallet_name,
}
}
/// Get the balance of the primary account.
pub async fn get_balance(&self) -> Result<Amount> {
let amount = self.inner.lock().await.get_balance(0).await?;

View File

@ -27,11 +27,7 @@ use swap::{
};
use tempfile::tempdir;
use testcontainers::{clients::Cli, Container, Docker, RunArgs};
use tokio::{
sync::{mpsc, Mutex},
task::JoinHandle,
time::interval,
};
use tokio::{sync::mpsc, task::JoinHandle, time::interval};
use tracing::dispatcher::DefaultGuard;
use tracing_log::LogTracer;
use url::Url;
@ -589,11 +585,11 @@ async fn init_test_wallets(
.await
.unwrap();
let xmr_wallet = swap::monero::Wallet {
inner: Mutex::new(monero.wallet(name).unwrap().client()),
network: monero::Network::default(),
default_wallet_name: "irrelevant_for_tests".to_string(),
};
let xmr_wallet = swap::monero::Wallet::new_with_client(
monero.wallet(name).unwrap().client(),
monero::Network::default(),
"irrelevant_for_tests".to_string(),
);
let electrum_rpc_url = {
let input = format!("tcp://@localhost:{}", electrum_rpc_port);