mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-11-17 15:26:14 +00:00
Allow EventLoop
to hold a database ready to pass to alice::Buider
The `EventLoop` will use the `Builder` interface to instantiate a `Swap` upon receiving a `SwapRequest` and successfully doing an execution setup. Before this change, the `EventLoop` would have to hold the path to the db and re-open the db everytime it wants to construct a swap. With this change, we can open the DB once and then hold a `Arc<Database>` in the `EventLoop` and pass it to new `Swap`s structs.
This commit is contained in:
parent
39a46baa2c
commit
f35ed436ce
@ -18,7 +18,7 @@ use libp2p::{
|
|||||||
core::Multiaddr, identity::Keypair, request_response::ResponseChannel, NetworkBehaviour, PeerId,
|
core::Multiaddr, identity::Keypair, request_response::ResponseChannel, NetworkBehaviour, PeerId,
|
||||||
};
|
};
|
||||||
use rand::rngs::OsRng;
|
use rand::rngs::OsRng;
|
||||||
use std::{path::PathBuf, sync::Arc};
|
use std::sync::Arc;
|
||||||
use tracing::{debug, info};
|
use tracing::{debug, info};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ pub struct Builder {
|
|||||||
swap_id: Uuid,
|
swap_id: Uuid,
|
||||||
identity: Keypair,
|
identity: Keypair,
|
||||||
peer_id: PeerId,
|
peer_id: PeerId,
|
||||||
db_path: PathBuf,
|
db: Database,
|
||||||
execution_params: ExecutionParams,
|
execution_params: ExecutionParams,
|
||||||
|
|
||||||
listen_address: Multiaddr,
|
listen_address: Multiaddr,
|
||||||
@ -79,7 +79,7 @@ impl Builder {
|
|||||||
swap_id: Uuid,
|
swap_id: Uuid,
|
||||||
bitcoin_wallet: Arc<bitcoin::Wallet>,
|
bitcoin_wallet: Arc<bitcoin::Wallet>,
|
||||||
monero_wallet: Arc<monero::Wallet>,
|
monero_wallet: Arc<monero::Wallet>,
|
||||||
db_path: PathBuf,
|
db: Database,
|
||||||
listen_address: Multiaddr,
|
listen_address: Multiaddr,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let network_seed = NetworkSeed::new(seed);
|
let network_seed = NetworkSeed::new(seed);
|
||||||
@ -90,7 +90,7 @@ impl Builder {
|
|||||||
swap_id,
|
swap_id,
|
||||||
identity,
|
identity,
|
||||||
peer_id,
|
peer_id,
|
||||||
db_path,
|
db,
|
||||||
execution_params,
|
execution_params,
|
||||||
listen_address,
|
listen_address,
|
||||||
bitcoin_wallet,
|
bitcoin_wallet,
|
||||||
@ -115,15 +115,13 @@ impl Builder {
|
|||||||
|
|
||||||
let (event_loop, event_loop_handle) = self.init_event_loop()?;
|
let (event_loop, event_loop_handle) = self.init_event_loop()?;
|
||||||
|
|
||||||
let db = Database::open(self.db_path.as_path())?;
|
|
||||||
|
|
||||||
Ok((
|
Ok((
|
||||||
Swap {
|
Swap {
|
||||||
event_loop_handle,
|
event_loop_handle,
|
||||||
bitcoin_wallet: self.bitcoin_wallet,
|
bitcoin_wallet: self.bitcoin_wallet,
|
||||||
monero_wallet: self.monero_wallet,
|
monero_wallet: self.monero_wallet,
|
||||||
execution_params: self.execution_params,
|
execution_params: self.execution_params,
|
||||||
db,
|
db: self.db,
|
||||||
state: initial_state,
|
state: initial_state,
|
||||||
swap_id: self.swap_id,
|
swap_id: self.swap_id,
|
||||||
},
|
},
|
||||||
@ -131,11 +129,8 @@ impl Builder {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
InitParams::None => {
|
InitParams::None => {
|
||||||
// reopen the existing database
|
|
||||||
let db = Database::open(self.db_path.as_path())?;
|
|
||||||
|
|
||||||
let resume_state =
|
let resume_state =
|
||||||
if let database::Swap::Alice(state) = db.get_state(self.swap_id)? {
|
if let database::Swap::Alice(state) = self.db.get_state(self.swap_id)? {
|
||||||
state.into()
|
state.into()
|
||||||
} else {
|
} else {
|
||||||
bail!(
|
bail!(
|
||||||
@ -154,7 +149,7 @@ impl Builder {
|
|||||||
monero_wallet: self.monero_wallet,
|
monero_wallet: self.monero_wallet,
|
||||||
execution_params: self.execution_params,
|
execution_params: self.execution_params,
|
||||||
swap_id: self.swap_id,
|
swap_id: self.swap_id,
|
||||||
db,
|
db: self.db,
|
||||||
},
|
},
|
||||||
event_loop,
|
event_loop,
|
||||||
))
|
))
|
||||||
|
Loading…
Reference in New Issue
Block a user