Skip to content

Commit

Permalink
remove Arc wrapper around daemon, instead pass directly into TxBroadc…
Browse files Browse the repository at this point in the history
…aster::broadcast
  • Loading branch information
conduition committed Aug 12, 2024
1 parent 21d4d1c commit 2dd759d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 14 deletions.
13 changes: 4 additions & 9 deletions src/electrum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use std::collections::{hash_map::Entry, HashMap};
use std::fmt;
use std::iter::FromIterator;
use std::str::FromStr;
use std::sync::Arc;

use crate::{
cache::Cache,
Expand Down Expand Up @@ -125,7 +124,7 @@ pub struct Rpc {
tracker: Tracker,
cache: Cache,
rpc_duration: Histogram,
daemon: Arc<Daemon>,
daemon: Daemon,
tx_broadcaster: TxBroadcaster,
signal: Signal,
banner: String,
Expand All @@ -144,15 +143,11 @@ impl Rpc {

let tracker = Tracker::new(config, metrics)?;
let signal = Signal::new();
let daemon = Arc::new(Daemon::connect(
config,
signal.exit_flag(),
tracker.metrics(),
)?);
let daemon = Daemon::connect(config, signal.exit_flag(), tracker.metrics())?;
let cache = Cache::new(tracker.metrics());

let tx_broadcaster = match &config.tx_broadcast_method {
TxBroadcastMethod::BitcoinRPC => TxBroadcaster::BitcoinRPC(daemon.clone()),
TxBroadcastMethod::BitcoinRPC => TxBroadcaster::BitcoinRPC,
TxBroadcastMethod::PushtxClear => TxBroadcaster::PushtxClear,
TxBroadcastMethod::PushtxTor => TxBroadcaster::PushtxTor,
TxBroadcastMethod::Script(script_path) => TxBroadcaster::Script(script_path.clone()),
Expand Down Expand Up @@ -376,7 +371,7 @@ impl Rpc {
fn transaction_broadcast(&self, (tx_hex,): &(String,)) -> Result<Value> {
let tx_bytes = Vec::from_hex(tx_hex).context("non-hex transaction")?;
let tx = deserialize(&tx_bytes).context("invalid transaction")?;
let txid = self.tx_broadcaster.broadcast(&tx)?;
let txid = self.tx_broadcaster.broadcast(&self.daemon, &tx)?;
Ok(json!(txid))
}

Expand Down
8 changes: 3 additions & 5 deletions src/tx_broadcaster.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
use anyhow::{bail, Result};
use bitcoin::{Transaction, Txid};

use std::sync::Arc;

use crate::daemon::Daemon;

/// Represents one of many possible ways of broadcasting transactions.
pub enum TxBroadcaster {
BitcoinRPC(Arc<Daemon>),
BitcoinRPC,
PushtxClear,
PushtxTor,
Script(String),
Expand Down Expand Up @@ -67,9 +65,9 @@ fn broadcast_with_pushtx(tx: &Transaction, opts: pushtx::Opts) -> Result<Txid> {
}

impl TxBroadcaster {
pub fn broadcast(&self, tx: &Transaction) -> Result<Txid> {
pub fn broadcast(&self, daemon: &Daemon, tx: &Transaction) -> Result<Txid> {
match self {
TxBroadcaster::BitcoinRPC(daemon) => daemon.broadcast(tx),
TxBroadcaster::BitcoinRPC => daemon.broadcast(tx),
TxBroadcaster::PushtxClear => broadcast_with_pushtx(
tx,
pushtx::Opts {
Expand Down

0 comments on commit 2dd759d

Please sign in to comment.