@@ -207,9 +207,10 @@ LDKCVec_C4Tuple_OutPointChannelIdCVec_MonitorEventZPublicKeyZZ monitors_pending_
207
207
struct EventQueue {
208
208
std::vector<LDK::Event> events;
209
209
};
210
- void handle_event (const void *this_arg, LDKEvent event) {
210
+ LDKCResult_NoneReplayEventZ handle_event (const void *this_arg, LDKEvent event) {
211
211
EventQueue* arg = (EventQueue*) this_arg;
212
212
arg->events .push_back (std::move (event));
213
+ return CResult_NoneReplayEventZ_ok ();
213
214
}
214
215
215
216
#ifdef REAL_NET
@@ -411,11 +412,13 @@ LDKStr custom_onion_msg_str(const void *this_arg) {
411
412
};
412
413
}
413
414
414
- LDKCOption_OnionMessageContentsZ handle_custom_onion_message (const void * this_arg, struct LDKOnionMessageContents msg) {
415
+ LDKCOption_C2Tuple_OnionMessageContentsResponseInstructionZZ handle_custom_onion_message (const void * this_arg, struct LDKOnionMessageContents msg, LDKCOption_CVec_u8ZZ context, LDKResponder responder) {
416
+ LDK::Responder resp (std::move (responder));
417
+ LDK::COption_CVec_u8ZZ ctx (std::move (context));
415
418
CustomOnionMsgQueue* arg = (CustomOnionMsgQueue*) this_arg;
416
419
std::unique_lock<std::mutex> lck (arg->mtx );
417
420
arg->msgs .push_back (std::move (msg));
418
- return COption_OnionMessageContentsZ_none ();
421
+ return COption_C2Tuple_OnionMessageContentsResponseInstructionZZ_none ();
419
422
}
420
423
421
424
LDKOnionMessageContents build_custom_onion_message () {
@@ -438,9 +441,10 @@ LDKCResult_COption_OnionMessageContentsZDecodeErrorZ read_custom_onion_message(c
438
441
return CResult_COption_OnionMessageContentsZDecodeErrorZ_ok (COption_OnionMessageContentsZ_some (build_custom_onion_message ()));
439
442
}
440
443
441
- LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ release_no_messages (const void * this_arg) {
442
- return LDKCVec_C3Tuple_OnionMessageContentsDestinationBlindedPathZZ {
443
- .data = NULL , .datalen = 0 };
444
+ LDKCVec_C2Tuple_OnionMessageContentsMessageSendInstructionsZZ release_no_messages (const void * this_arg) {
445
+ return LDKCVec_C2Tuple_OnionMessageContentsMessageSendInstructionsZZ {
446
+ .data = NULL , .datalen = 0
447
+ };
444
448
}
445
449
446
450
struct CustomMsgQueue {
@@ -488,6 +492,11 @@ LDKCVec_C2Tuple_PublicKeyTypeZZ never_send_custom_msgs(const void* this_arg) {
488
492
.data = NULL , .datalen = 0
489
493
};
490
494
}
495
+ void peer_disconnected (const void * this_arg, struct LDKPublicKey _their_node_id) {}
496
+ LDKCResult_NoneNoneZ accept_peer_connected (const void * this_arg, struct LDKPublicKey _their_node_id, const struct LDKInit *msg, bool inbound) {
497
+ return CResult_NoneNoneZ_ok ();
498
+ }
499
+
491
500
492
501
LDKCVec_C2Tuple_PublicKeyTypeZZ create_custom_msg (const void * this_arg) {
493
502
const LDKPublicKey *counterparty_node_id = (const LDKPublicKey *)this_arg;
@@ -614,8 +623,9 @@ int main() {
614
623
LDK::IgnoringMessageHandler ignoring_handler1 = IgnoringMessageHandler_new ();
615
624
LDK::CustomMessageHandler custom_msg_handler1 = IgnoringMessageHandler_as_CustomMessageHandler (&ignoring_handler1);
616
625
LDK::CustomOnionMessageHandler custom_onion_msg_handler1 = IgnoringMessageHandler_as_CustomOnionMessageHandler (&ignoring_handler1);
626
+ LDK::AsyncPaymentsMessageHandler async_msg_handler1 = IgnoringMessageHandler_as_AsyncPaymentsMessageHandler (&ignoring_handler1);
617
627
LDK::DefaultMessageRouter mr1 = DefaultMessageRouter_new (&net_graph1, KeysManager_as_EntropySource (&keys1));
618
- LDK::OnionMessenger om1 = OnionMessenger_new (KeysManager_as_EntropySource (&keys1), KeysManager_as_NodeSigner (&keys1), logger1, ChannelManager_as_NodeIdLookUp (&cm1), DefaultMessageRouter_as_MessageRouter (&mr1), IgnoringMessageHandler_as_OffersMessageHandler (&ignoring_handler1), std::move (custom_onion_msg_handler1));
628
+ LDK::OnionMessenger om1 = OnionMessenger_new (KeysManager_as_EntropySource (&keys1), KeysManager_as_NodeSigner (&keys1), logger1, ChannelManager_as_NodeIdLookUp (&cm1), DefaultMessageRouter_as_MessageRouter (&mr1), IgnoringMessageHandler_as_OffersMessageHandler (&ignoring_handler1), std::move (async_msg_handler1), std::move ( custom_onion_msg_handler1));
619
629
620
630
LDK::CVec_ChannelDetailsZ channels = ChannelManager_list_channels (&cm1);
621
631
assert (channels->datalen == 0 );
@@ -628,9 +638,9 @@ int main() {
628
638
// Demo getting a channel key and check that its returning real pubkeys:
629
639
LDKSixteenBytes user_id_1 { .data = {45 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 44 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } };
630
640
LDKThirtyTwoBytes chan_signer_id1 = signer_provider1.generate_channel_keys_id (false , 42 , U128_new (user_id_1));
631
- LDK::WriteableEcdsaChannelSigner chan_signer1 = signer_provider1.derive_channel_signer (42 , chan_signer_id1);
632
- chan_signer1->EcdsaChannelSigner . ChannelSigner .set_pubkeys (&chan_signer1->EcdsaChannelSigner . ChannelSigner ); // Make sure pubkeys is defined
633
- LDKPublicKey payment_point = ChannelPublicKeys_get_payment_point (&chan_signer1->EcdsaChannelSigner . ChannelSigner .pubkeys );
641
+ LDK::EcdsaChannelSigner chan_signer1 = signer_provider1.derive_channel_signer (42 , chan_signer_id1);
642
+ chan_signer1->ChannelSigner .set_pubkeys (&chan_signer1->ChannelSigner ); // Make sure pubkeys is defined
643
+ LDKPublicKey payment_point = ChannelPublicKeys_get_payment_point (&chan_signer1->ChannelSigner .pubkeys );
634
644
assert (memcmp (&payment_point, &null_pk, sizeof (null_pk)));
635
645
636
646
// Instantiate classes for node 2:
@@ -651,7 +661,7 @@ int main() {
651
661
LDK::CustomMessageHandler custom_msg_handler2 = IgnoringMessageHandler_as_CustomMessageHandler (&ignoring_handler2);
652
662
LDK::CustomOnionMessageHandler custom_onion_msg_handler2 = IgnoringMessageHandler_as_CustomOnionMessageHandler (&ignoring_handler2);
653
663
LDK::DefaultMessageRouter mr2 = DefaultMessageRouter_new (&net_graph2, KeysManager_as_EntropySource (&keys2));
654
- LDK::OnionMessenger om2 = OnionMessenger_new (KeysManager_as_EntropySource (&keys2), KeysManager_as_NodeSigner (&keys2), logger2, ChannelManager_as_NodeIdLookUp (&cm2), DefaultMessageRouter_as_MessageRouter (&mr2), IgnoringMessageHandler_as_OffersMessageHandler (&ignoring_handler2), std::move (custom_onion_msg_handler2));
664
+ LDK::OnionMessenger om2 = OnionMessenger_new (KeysManager_as_EntropySource (&keys2), KeysManager_as_NodeSigner (&keys2), logger2, ChannelManager_as_NodeIdLookUp (&cm2), DefaultMessageRouter_as_MessageRouter (&mr2), IgnoringMessageHandler_as_OffersMessageHandler (&ignoring_handler2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler (&ignoring_handler2), std::move (custom_onion_msg_handler2));
655
665
656
666
LDK::CVec_ChannelDetailsZ channels2 = ChannelManager_list_channels (&cm2);
657
667
assert (channels2->datalen == 0 );
@@ -711,7 +721,7 @@ int main() {
711
721
assert (!memcmp (queue.events [0 ]->funding_generation_ready .output_script .data , channel_open_block + 58 + 81 , 34 ));
712
722
LDKTransaction funding_transaction { .data = const_cast <uint8_t *>(channel_open_block + 81 ), .datalen = sizeof (channel_open_block) - 81 , .data_is_owned = false };
713
723
714
- LDK::CResult_NoneAPIErrorZ fund_res = ChannelManager_funding_transaction_generated (&cm1, &queue.events [0 ]->funding_generation_ready .temporary_channel_id , queue.events [0 ]->funding_generation_ready .counterparty_node_id , funding_transaction);
724
+ LDK::CResult_NoneAPIErrorZ fund_res = ChannelManager_funding_transaction_generated (&cm1, ChannelId_clone ( &queue.events [0 ]->funding_generation_ready .temporary_channel_id ) , queue.events [0 ]->funding_generation_ready .counterparty_node_id , funding_transaction);
715
725
assert (fund_res->result_ok );
716
726
break ;
717
727
}
@@ -874,16 +884,16 @@ int main() {
874
884
.inner = NULL , .is_owned = false
875
885
}, Bolt11Invoice_min_final_cltv_expiry_delta (invoice->contents .result ));
876
886
LDK::RouteParameters route_params = RouteParameters_from_payment_params_and_value (
877
- PaymentParameters_new (std::move (payee), COption_u64Z_none (), 0xffffffff , 1 , 2 ,
887
+ PaymentParameters_new (std::move (payee), COption_u64Z_none (), 0xffffffff , 1 , 20 , 2 ,
878
888
LDKCVec_u64Z { .data = NULL , .datalen = 0 }, LDKCVec_u64Z { .data = NULL , .datalen = 0 }),
879
889
5000 );
880
890
random_bytes = entropy_source1.get_secure_random_bytes ();
881
891
LDK::ProbabilisticScoringFeeParameters params = ProbabilisticScoringFeeParameters_default ();
882
892
883
- LDK::CResult_RouteLightningErrorZ route = find_route (ChannelManager_get_our_node_id (&cm1), &route_params, &net_graph2, &outbound_channels, logger1, &chan_scorer, ¶ms, &random_bytes.data );
893
+ LDK::CResult_RouteLightningErrorZ route_res = find_route (ChannelManager_get_our_node_id (&cm1), &route_params, &net_graph2, &outbound_channels, logger1, &chan_scorer, ¶ms, &random_bytes.data );
884
894
885
- assert (route ->result_ok );
886
- LDK::CVec_PathZ paths = Route_get_paths (route ->contents .result );
895
+ assert (route_res ->result_ok );
896
+ LDK::CVec_PathZ paths = Route_get_paths (route_res ->contents .result );
887
897
assert (paths->datalen == 1 );
888
898
LDK::CVec_RouteHopZ hops = Path_get_hops (&paths->data [0 ]);
889
899
assert (hops->datalen == 1 );
@@ -892,8 +902,9 @@ int main() {
892
902
assert (RouteHop_get_short_channel_id (&hops->data [0 ]) == channel_scid);
893
903
LDKThirtyTwoBytes payment_secret;
894
904
memcpy (payment_secret.data , Bolt11Invoice_payment_secret (invoice->contents .result ), 32 );
905
+ LDK::Route route (Route_clone (route_res->contents .result ));
895
906
LDK::CResult_NonePaymentSendFailureZ send_res = ChannelManager_send_payment_with_route (&cm1,
896
- route-> contents . result , payment_hash, RecipientOnionFields_secret_only (payment_secret), payment_hash);
907
+ std::move ( route) , payment_hash, RecipientOnionFields_secret_only (payment_secret), payment_hash);
897
908
assert (send_res->result_ok );
898
909
}
899
910
@@ -1014,7 +1025,7 @@ int main() {
1014
1025
};
1015
1026
LDK::DefaultMessageRouter mr1 = DefaultMessageRouter_new (&net_graph1, KeysManager_as_EntropySource (&keys1));
1016
1027
LDK::IgnoringMessageHandler ignorer_1 = IgnoringMessageHandler_new ();
1017
- LDK::OnionMessenger om1 = OnionMessenger_new (KeysManager_as_EntropySource (&keys1), KeysManager_as_NodeSigner (&keys1), logger1, ChannelManager_as_NodeIdLookUp (&cm1), DefaultMessageRouter_as_MessageRouter (&mr1), IgnoringMessageHandler_as_OffersMessageHandler (&ignorer_1), std::move (custom_onion_msg_handler1));
1028
+ LDK::OnionMessenger om1 = OnionMessenger_new (KeysManager_as_EntropySource (&keys1), KeysManager_as_NodeSigner (&keys1), logger1, ChannelManager_as_NodeIdLookUp (&cm1), DefaultMessageRouter_as_MessageRouter (&mr1), IgnoringMessageHandler_as_OffersMessageHandler (&ignorer_1), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler (&ignorer_1), std::move (custom_onion_msg_handler1));
1018
1029
1019
1030
LDK::CVec_ChannelMonitorZ mons_list2 = LDKCVec_ChannelMonitorZ { .data = (LDKChannelMonitor*)malloc (sizeof (LDKChannelMonitor)), .datalen = 1 };
1020
1031
assert (mons2.mons .size () == 1 );
@@ -1042,7 +1053,7 @@ int main() {
1042
1053
};
1043
1054
LDK::DefaultMessageRouter mr2 = DefaultMessageRouter_new (&net_graph2, KeysManager_as_EntropySource (&keys2));
1044
1055
LDK::IgnoringMessageHandler ignorer_2 = IgnoringMessageHandler_new ();
1045
- LDK::OnionMessenger om2 = OnionMessenger_new (KeysManager_as_EntropySource (&keys2), KeysManager_as_NodeSigner (&keys2), logger2, ChannelManager_as_NodeIdLookUp (&cm2), DefaultMessageRouter_as_MessageRouter (&mr2), IgnoringMessageHandler_as_OffersMessageHandler (&ignorer_2), custom_onion_msg_handler2);
1056
+ LDK::OnionMessenger om2 = OnionMessenger_new (KeysManager_as_EntropySource (&keys2), KeysManager_as_NodeSigner (&keys2), logger2, ChannelManager_as_NodeIdLookUp (&cm2), DefaultMessageRouter_as_MessageRouter (&mr2), IgnoringMessageHandler_as_OffersMessageHandler (&ignorer_2), IgnoringMessageHandler_as_AsyncPaymentsMessageHandler (&ignorer_2), custom_onion_msg_handler2);
1046
1057
1047
1058
// Attempt to close the channel...
1048
1059
LDKThirtyTwoBytes chan_id_bytes;
@@ -1057,6 +1068,8 @@ int main() {
1057
1068
.this_arg = &chan_2_node_id,
1058
1069
.handle_custom_message = NULL , // We only create custom messages, not handle them
1059
1070
.get_and_clear_pending_msg = create_custom_msg,
1071
+ .peer_disconnected = peer_disconnected,
1072
+ .peer_connected = accept_peer_connected,
1060
1073
.provided_node_features = custom_node_features,
1061
1074
.provided_init_features = custom_init_features,
1062
1075
.CustomMessageReader = LDKCustomMessageReader {
@@ -1075,6 +1088,8 @@ int main() {
1075
1088
.this_arg = &peer_2_custom_messages,
1076
1089
.handle_custom_message = handle_custom_message,
1077
1090
.get_and_clear_pending_msg = never_send_custom_msgs,
1091
+ .peer_disconnected = peer_disconnected,
1092
+ .peer_connected = accept_peer_connected,
1078
1093
.provided_node_features = custom_node_features,
1079
1094
.provided_init_features = custom_init_features,
1080
1095
.CustomMessageReader = LDKCustomMessageReader {
@@ -1207,8 +1222,7 @@ int main() {
1207
1222
LDK::CResult_SendSuccessSendErrorZ om_send_res =
1208
1223
OnionMessenger_send_onion_message (&om1,
1209
1224
build_custom_onion_message (),
1210
- Destination_node (ChannelManager_get_our_node_id (&cm2)),
1211
- LDKBlindedPath { .inner = NULL , .is_owned = true });
1225
+ MessageSendInstructions_without_reply_path (Destination_node (ChannelManager_get_our_node_id (&cm2))));
1212
1226
assert (om_send_res->result_ok );
1213
1227
PeerManager_process_events (&net1);
1214
1228
std::cout << __FILE__ << " :" << __LINE__ << " - " << " Awaiting onion message..." << std::endl;
0 commit comments