@@ -16,6 +16,7 @@ use bitcoin_bech32::WitnessProgram;
16
16
use disk:: { INBOUND_PAYMENTS_FNAME , OUTBOUND_PAYMENTS_FNAME } ;
17
17
use lightning:: chain:: { chainmonitor, ChannelMonitorUpdateStatus } ;
18
18
use lightning:: chain:: { Filter , Watch } ;
19
+ use lightning:: events:: bump_transaction:: { BumpTransactionEventHandler , Wallet } ;
19
20
use lightning:: events:: { Event , PaymentFailureReason , PaymentPurpose } ;
20
21
use lightning:: ln:: channelmanager:: { self , RecentPaymentDetails } ;
21
22
use lightning:: ln:: channelmanager:: {
@@ -141,10 +142,17 @@ pub(crate) type NetworkGraph = gossip::NetworkGraph<Arc<FilesystemLogger>>;
141
142
142
143
type OnionMessenger = SimpleArcOnionMessenger < FilesystemLogger > ;
143
144
145
+ pub ( crate ) type BumpTxEventHandler = BumpTransactionEventHandler <
146
+ Arc < BitcoindClient > ,
147
+ Arc < Wallet < Arc < BitcoindClient > , Arc < FilesystemLogger > > > ,
148
+ Arc < KeysManager > ,
149
+ Arc < FilesystemLogger > ,
150
+ > ;
151
+
144
152
async fn handle_ldk_events (
145
153
channel_manager : & Arc < ChannelManager > , bitcoind_client : & BitcoindClient ,
146
154
network_graph : & NetworkGraph , keys_manager : & KeysManager ,
147
- inbound_payments : Arc < Mutex < PaymentInfoStorage > > ,
155
+ bump_tx_event_handler : & BumpTxEventHandler , inbound_payments : Arc < Mutex < PaymentInfoStorage > > ,
148
156
outbound_payments : Arc < Mutex < PaymentInfoStorage > > , persister : & Arc < FilesystemPersister > ,
149
157
network : Network , event : Event ,
150
158
) {
@@ -455,7 +463,7 @@ async fn handle_ldk_events(
455
463
// the funding transaction either confirms, or this event is generated.
456
464
}
457
465
Event :: HTLCIntercepted { .. } => { }
458
- Event :: BumpTransaction ( _ ) => { }
466
+ Event :: BumpTransaction ( event ) => bump_tx_event_handler . handle_event ( & event ) ,
459
467
}
460
468
}
461
469
@@ -558,6 +566,13 @@ async fn start_ldk() {
558
566
let cur = SystemTime :: now ( ) . duration_since ( SystemTime :: UNIX_EPOCH ) . unwrap ( ) ;
559
567
let keys_manager = Arc :: new ( KeysManager :: new ( & keys_seed, cur. as_secs ( ) , cur. subsec_nanos ( ) ) ) ;
560
568
569
+ let bump_tx_event_handler = Arc :: new ( BumpTransactionEventHandler :: new (
570
+ Arc :: clone ( & broadcaster) ,
571
+ Arc :: new ( Wallet :: new ( Arc :: clone ( & bitcoind_client) , Arc :: clone ( & logger) ) ) ,
572
+ Arc :: clone ( & keys_manager) ,
573
+ Arc :: clone ( & logger) ,
574
+ ) ) ;
575
+
561
576
// Step 7: Read ChannelMonitor state from disk
562
577
let mut channelmonitors =
563
578
persister. read_channelmonitors ( keys_manager. clone ( ) , keys_manager. clone ( ) ) . unwrap ( ) ;
@@ -805,6 +820,7 @@ async fn start_ldk() {
805
820
let bitcoind_client_event_listener = Arc :: clone ( & bitcoind_client_event_listener) ;
806
821
let network_graph_event_listener = Arc :: clone ( & network_graph_event_listener) ;
807
822
let keys_manager_event_listener = Arc :: clone ( & keys_manager_event_listener) ;
823
+ let bump_tx_event_handler = Arc :: clone ( & bump_tx_event_handler) ;
808
824
let inbound_payments_event_listener = Arc :: clone ( & inbound_payments_event_listener) ;
809
825
let outbound_payments_event_listener = Arc :: clone ( & outbound_payments_event_listener) ;
810
826
let persister_event_listener = Arc :: clone ( & persister_event_listener) ;
@@ -814,6 +830,7 @@ async fn start_ldk() {
814
830
& bitcoind_client_event_listener,
815
831
& network_graph_event_listener,
816
832
& keys_manager_event_listener,
833
+ & bump_tx_event_handler,
817
834
inbound_payments_event_listener,
818
835
outbound_payments_event_listener,
819
836
& persister_event_listener,
0 commit comments