@@ -5,7 +5,7 @@ mod util;
55
66use crate :: service:: NodeService ;
77
8- use ldk_node:: { Builder , Event } ;
8+ use ldk_node:: { Builder , Event , Node } ;
99
1010use tokio:: net:: TcpListener ;
1111use tokio:: signal:: unix:: SignalKind ;
@@ -24,7 +24,7 @@ use crate::util::config::load_config;
2424use crate :: util:: proto_adapter:: { forwarded_payment_to_proto, payment_to_proto} ;
2525use hex:: DisplayHex ;
2626use ldk_node:: config:: Config ;
27- use ldk_node:: lightning:: util :: persist :: KVStore ;
27+ use ldk_node:: lightning:: ln :: channelmanager :: PaymentId ;
2828use ldk_node:: logger:: LogLevel ;
2929use prost:: Message ;
3030use rand:: Rng ;
@@ -35,38 +35,6 @@ use std::time::{SystemTime, UNIX_EPOCH};
3535
3636const USAGE_GUIDE : & str = "Usage: ldk-server <config_path>" ;
3737
38- macro_rules! upsert_payment_details {
39- ( $event_node: expr, $paginated_store: expr, $payment_id: expr) => { {
40- if let Some ( payment_details) = $event_node. payment( $payment_id) {
41- let payment = payment_to_proto( payment_details) ;
42- let time = SystemTime :: now( )
43- . duration_since( UNIX_EPOCH )
44- . expect( "Time must be > 1970" )
45- . as_secs( ) as i64 ;
46-
47- match $paginated_store. write(
48- PAYMENTS_PERSISTENCE_PRIMARY_NAMESPACE ,
49- PAYMENTS_PERSISTENCE_SECONDARY_NAMESPACE ,
50- & $payment_id. 0 . to_lower_hex_string( ) ,
51- time,
52- & payment. encode_to_vec( ) ,
53- ) {
54- Ok ( _) => {
55- $event_node. event_handled( ) ;
56- } ,
57- Err ( e) => {
58- eprintln!( "Failed to write payment to persistence: {}" , e) ;
59- } ,
60- }
61- } else {
62- eprintln!(
63- "Unable to find payment with paymentId: {}" ,
64- $payment_id. 0 . to_lower_hex_string( )
65- ) ;
66- }
67- } } ;
68- }
69-
7038fn main ( ) {
7139 let args: Vec < String > = std:: env:: args ( ) . collect ( ) ;
7240
@@ -181,18 +149,18 @@ fn main() {
181149 payment_id, payment_hash, amount_msat
182150 ) ;
183151 let payment_id = payment_id. expect( "PaymentId expected for ldk-server >=0.1" ) ;
184- upsert_payment_details! ( event_node, & paginated_store, & payment_id) ;
152+ upsert_payment_details( & event_node, Arc :: clone ( & paginated_store) as Arc <dyn PaginatedKVStore > , & payment_id) ;
185153 } ,
186154 Event :: PaymentSuccessful { payment_id, ..} => {
187155 let payment_id = payment_id. expect( "PaymentId expected for ldk-server >=0.1" ) ;
188- upsert_payment_details! ( event_node, & paginated_store, & payment_id) ;
156+ upsert_payment_details( & event_node, Arc :: clone ( & paginated_store) as Arc <dyn PaginatedKVStore > , & payment_id) ;
189157 } ,
190158 Event :: PaymentFailed { payment_id, ..} => {
191159 let payment_id = payment_id. expect( "PaymentId expected for ldk-server >=0.1" ) ;
192- upsert_payment_details! ( event_node, & paginated_store, & payment_id) ;
160+ upsert_payment_details( & event_node, Arc :: clone ( & paginated_store) as Arc <dyn PaginatedKVStore > , & payment_id) ;
193161 } ,
194162 Event :: PaymentClaimable { payment_id, ..} => {
195- upsert_payment_details! ( event_node, & paginated_store, & payment_id) ;
163+ upsert_payment_details( & event_node, Arc :: clone ( & paginated_store) as Arc <dyn PaginatedKVStore > , & payment_id) ;
196164 } ,
197165 Event :: PaymentForwarded {
198166 prev_channel_id,
@@ -280,3 +248,31 @@ fn main() {
280248 node. stop ( ) . expect ( "Shutdown should always succeed." ) ;
281249 println ! ( "Shutdown complete.." ) ;
282250}
251+
252+ fn upsert_payment_details (
253+ event_node : & Node , paginated_store : Arc < dyn PaginatedKVStore > , payment_id : & PaymentId ,
254+ ) {
255+ if let Some ( payment_details) = event_node. payment ( payment_id) {
256+ let payment = payment_to_proto ( payment_details) ;
257+ let time =
258+ SystemTime :: now ( ) . duration_since ( UNIX_EPOCH ) . expect ( "Time must be > 1970" ) . as_secs ( )
259+ as i64 ;
260+
261+ match paginated_store. write (
262+ PAYMENTS_PERSISTENCE_PRIMARY_NAMESPACE ,
263+ PAYMENTS_PERSISTENCE_SECONDARY_NAMESPACE ,
264+ & payment_id. 0 . to_lower_hex_string ( ) ,
265+ time,
266+ & payment. encode_to_vec ( ) ,
267+ ) {
268+ Ok ( _) => {
269+ event_node. event_handled ( ) ;
270+ } ,
271+ Err ( e) => {
272+ eprintln ! ( "Failed to write payment to persistence: {}" , e) ;
273+ } ,
274+ }
275+ } else {
276+ eprintln ! ( "Unable to find payment with paymentId: {}" , payment_id. 0 . to_lower_hex_string( ) ) ;
277+ }
278+ }
0 commit comments