static native String get_lib_version_string();
public static String get_ldk_java_bindings_version() {
- return "v0.0.99.1";
+ return "v0.0.99.1-7-gf7a4eb8-dirty";
}
public static native String get_ldk_c_bindings_version();
public static native String get_ldk_version();
byte[] write();
}
public static native long LDKSign_new(LDKSign impl, LDKBaseSign BaseSign, long pubkeys);
+ public static native long LDKSign_get_BaseSign(long arg);
// LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
public static native byte[] Sign_write(long this_arg);
public static native boolean LDKCResult_SignDecodeErrorZ_result_ok(long arg);
public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg);
public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
+ public static native boolean LDKCResult_PaymentHashPaymentSendFailureZ_result_ok(long arg);
+ public static native byte[] LDKCResult_PaymentHashPaymentSendFailureZ_get_ok(long arg);
+ public static native long LDKCResult_PaymentHashPaymentSendFailureZ_get_err(long arg);
public static class LDKNetAddress {
private LDKNetAddress() {}
public final static class IPv4 extends LDKNetAddress {
public static native byte[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long ptr);
public static native long[] LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long ptr);
public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_new(long[] elems);
+ public static class LDKPaymentPurpose {
+ private LDKPaymentPurpose() {}
+ public final static class InvoicePayment extends LDKPaymentPurpose {
+ public byte[] payment_preimage;
+ public byte[] payment_secret;
+ public long user_payment_id;
+ InvoicePayment(byte[] payment_preimage, byte[] payment_secret, long user_payment_id) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; this.user_payment_id = user_payment_id; }
+ }
+ public final static class SpontaneousPayment extends LDKPaymentPurpose {
+ public byte[] spontaneous_payment;
+ SpontaneousPayment(byte[] spontaneous_payment) { this.spontaneous_payment = spontaneous_payment; }
+ }
+ static native void init();
+ }
+ static { LDKPaymentPurpose.init(); }
+ public static native LDKPaymentPurpose LDKPaymentPurpose_ref_from_ptr(long ptr);
public static class LDKEvent {
private LDKEvent() {}
public final static class FundingGenerationReady extends LDKEvent {
}
public final static class PaymentReceived extends LDKEvent {
public byte[] payment_hash;
- public byte[] payment_preimage;
- public byte[] payment_secret;
public long amt;
- public long user_payment_id;
- PaymentReceived(byte[] payment_hash, byte[] payment_preimage, byte[] payment_secret, long amt, long user_payment_id) { this.payment_hash = payment_hash; this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; this.amt = amt; this.user_payment_id = user_payment_id; }
+ public long purpose;
+ PaymentReceived(byte[] payment_hash, long amt, long purpose) { this.payment_hash = payment_hash; this.amt = amt; this.purpose = purpose; }
}
public final static class PaymentSent extends LDKEvent {
public byte[] payment_preimage;
void handle_error(byte[] their_node_id, long msg);
}
public static native long LDKChannelMessageHandler_new(LDKChannelMessageHandler impl, LDKMessageSendEventsProvider MessageSendEventsProvider);
+ public static native long LDKChannelMessageHandler_get_MessageSendEventsProvider(long arg);
// void ChannelMessageHandler_handle_open_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg
public static native void ChannelMessageHandler_handle_open_channel(long this_arg, byte[] their_node_id, long their_features, long msg);
// void ChannelMessageHandler_handle_accept_channel LDKChannelMessageHandler *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg
long handle_query_short_channel_ids(byte[] their_node_id, long msg);
}
public static native long LDKRoutingMessageHandler_new(LDKRoutingMessageHandler impl, LDKMessageSendEventsProvider MessageSendEventsProvider);
+ public static native long LDKRoutingMessageHandler_get_MessageSendEventsProvider(long arg);
// LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_node_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg
public static native long RoutingMessageHandler_handle_node_announcement(long this_arg, long msg);
// LDKCResult_boolLightningErrorZ RoutingMessageHandler_handle_channel_announcement LDKRoutingMessageHandler *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg
public static native void CResult_NonePaymentSendFailureZ_free(long _res);
// struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
public static native long CResult_NonePaymentSendFailureZ_clone(long orig);
+ // struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
+ public static native long CResult_PaymentHashPaymentSendFailureZ_ok(byte[] o);
+ // struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
+ public static native long CResult_PaymentHashPaymentSendFailureZ_err(long e);
+ // void CResult_PaymentHashPaymentSendFailureZ_free(struct LDKCResult_PaymentHashPaymentSendFailureZ _res);
+ public static native void CResult_PaymentHashPaymentSendFailureZ_free(long _res);
+ // struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_clone(const struct LDKCResult_PaymentHashPaymentSendFailureZ *NONNULL_PTR orig);
+ public static native long CResult_PaymentHashPaymentSendFailureZ_clone(long orig);
// void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
public static native void CVec_NetAddressZ_free(long[] _res);
// struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
public static native void CResult_InvoiceSignOrCreationErrorZ_free(long _res);
// struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
public static native long CResult_InvoiceSignOrCreationErrorZ_clone(long orig);
+ // void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
+ public static native void PaymentPurpose_free(long this_ptr);
+ // struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
+ public static native long PaymentPurpose_clone(long orig);
// void Event_free(struct LDKEvent this_ptr);
public static native void Event_free(long this_ptr);
// struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
public static native void ChannelManager_force_close_all_channels(long this_arg);
// MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
public static native long ChannelManager_send_payment(long this_arg, long route, byte[] payment_hash, byte[] payment_secret);
+ // MUST_USE_RES struct LDKCResult_PaymentHashPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
+ public static native long ChannelManager_send_spontaneous_payment(long this_arg, long route, byte[] payment_preimage);
// MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction);
public static native long ChannelManager_funding_transaction_generated(long this_arg, byte[] temporary_channel_id, byte[] funding_transaction);
// void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
public static native boolean RouteHintHop_eq(long a, long b);
// struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
public static native long RouteHintHop_clone(long orig);
+ // struct LDKCResult_RouteLightningErrorZ get_keysend_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey payee, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger);
+ public static native long get_keysend_route(byte[] our_node_id, long network, byte[] payee, long[] first_hops, long[] last_hops, long final_value_msat, int final_cltv, long logger);
// struct LDKCResult_RouteLightningErrorZ get_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey payee, struct LDKInvoiceFeatures payee_features, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger);
public static native long get_route(byte[] our_node_id, long network, byte[] payee, long payee_features, long[] first_hops, long[] last_hops, long final_value_msat, int final_cltv, long logger);
// void NetworkGraph_free(struct LDKNetworkGraph this_obj);
*/
public APIError clone() {
long ret = bindings.APIError_clone(this.ptr);
+ if (ret < 1024) { return null; }
APIError ret_hu_conv = APIError.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public AcceptChannel clone() {
long ret = bindings.AcceptChannel_clone(this.ptr);
+ if (ret < 1024) { return null; }
AcceptChannel ret_hu_conv = new AcceptChannel(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_AcceptChannelDecodeErrorZ read(byte[] ser) {
long ret = bindings.AcceptChannel_read(ser);
+ if (ret < 1024) { return null; }
Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_TxOutAccessErrorZ get_utxo(byte[] genesis_hash, long short_channel_id) {
long ret = bindings.Access_get_utxo(this.ptr, genesis_hash, short_channel_id);
+ if (ret < 1024) { return null; }
Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static AnnouncementSignatures of(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg) {
long ret = bindings.AnnouncementSignatures_new(channel_id_arg, short_channel_id_arg, node_signature_arg, bitcoin_signature_arg);
+ if (ret < 1024) { return null; }
AnnouncementSignatures ret_hu_conv = new AnnouncementSignatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public AnnouncementSignatures clone() {
long ret = bindings.AnnouncementSignatures_clone(this.ptr);
+ if (ret < 1024) { return null; }
AnnouncementSignatures ret_hu_conv = new AnnouncementSignatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_AnnouncementSignaturesDecodeErrorZ read(byte[] ser) {
long ret = bindings.AnnouncementSignatures_read(ser);
+ if (ret < 1024) { return null; }
Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static BackgroundProcessor start(ChannelManagerPersister persister, EventHandler event_handler, ChainMonitor chain_monitor, ChannelManager channel_manager, PeerManager peer_manager, Logger logger) {
long ret = bindings.BackgroundProcessor_start(persister == null ? 0 : persister.ptr, event_handler == null ? 0 : event_handler.ptr, chain_monitor == null ? 0 : chain_monitor.ptr & ~1, channel_manager == null ? 0 : channel_manager.ptr & ~1, peer_manager == null ? 0 : peer_manager.ptr & ~1, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
BackgroundProcessor ret_hu_conv = new BackgroundProcessor(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(persister);
*/
public Result_NoneErrorZ stop() {
long ret = bindings.BackgroundProcessor_stop(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(this);
// Due to rust's strict-ownership memory model, in some cases we need to "move"
*/
public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment(CommitmentTransaction commitment_tx) {
long ret = bindings.BaseSign_sign_counterparty_commitment(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(commitment_tx);
return ret_hu_conv;
*/
public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htlcs(HolderCommitmentTransaction commitment_tx) {
long ret = bindings.BaseSign_sign_holder_commitment_and_htlcs(this.ptr, commitment_tx == null ? 0 : commitment_tx.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(commitment_tx);
return ret_hu_conv;
*/
public Result_SignatureNoneZ sign_justice_revoked_output(byte[] justice_tx, long input, long amount, byte[] per_commitment_key) {
long ret = bindings.BaseSign_sign_justice_revoked_output(this.ptr, justice_tx, input, amount, per_commitment_key);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_SignatureNoneZ sign_justice_revoked_htlc(byte[] justice_tx, long input, long amount, byte[] per_commitment_key, HTLCOutputInCommitment htlc) {
long ret = bindings.BaseSign_sign_justice_revoked_htlc(this.ptr, justice_tx, input, amount, per_commitment_key, htlc == null ? 0 : htlc.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(htlc);
return ret_hu_conv;
*/
public Result_SignatureNoneZ sign_counterparty_htlc_transaction(byte[] htlc_tx, long input, long amount, byte[] per_commitment_point, HTLCOutputInCommitment htlc) {
long ret = bindings.BaseSign_sign_counterparty_htlc_transaction(this.ptr, htlc_tx, input, amount, per_commitment_point, htlc == null ? 0 : htlc.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(htlc);
return ret_hu_conv;
*/
public Result_SignatureNoneZ sign_closing_transaction(byte[] closing_tx) {
long ret = bindings.BaseSign_sign_closing_transaction(this.ptr, closing_tx);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_SignatureNoneZ sign_channel_announcement(UnsignedChannelAnnouncement msg) {
long ret = bindings.BaseSign_sign_channel_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public ChannelPublicKeys get_pubkeys() {
long ret = bindings.BaseSign_get_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public BestBlock clone() {
long ret = bindings.BestBlock_clone(this.ptr);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static BestBlock from_genesis(Network network) {
long ret = bindings.BestBlock_from_genesis(network);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static BestBlock of(byte[] block_hash, int height) {
long ret = bindings.BestBlock_new(block_hash, height);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static BuiltCommitmentTransaction of(byte[] transaction_arg, byte[] txid_arg) {
long ret = bindings.BuiltCommitmentTransaction_new(transaction_arg, txid_arg);
+ if (ret < 1024) { return null; }
BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public BuiltCommitmentTransaction clone() {
long ret = bindings.BuiltCommitmentTransaction_clone(this.ptr);
+ if (ret < 1024) { return null; }
BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_BuiltCommitmentTransactionDecodeErrorZ read(byte[] ser) {
long ret = bindings.BuiltCommitmentTransaction_read(ser);
+ if (ret < 1024) { return null; }
Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
* pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
* always need to fetch full blocks absent another means for determining which blocks contain
* transactions relevant to the watched channels.
+ *
+ * Note that chain_source (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public static ChainMonitor of(Filter chain_source, BroadcasterInterface broadcaster, Logger logger, FeeEstimator feeest, Persist persister) {
+ public static ChainMonitor of(@Nullable Filter chain_source, BroadcasterInterface broadcaster, Logger logger, FeeEstimator feeest, Persist persister) {
long ret = bindings.ChainMonitor_new(chain_source == null ? 0 : chain_source.ptr, broadcaster == null ? 0 : broadcaster.ptr, logger == null ? 0 : logger.ptr, feeest == null ? 0 : feeest.ptr, persister == null ? 0 : persister.ptr);
+ if (ret < 1024) { return null; }
ChainMonitor ret_hu_conv = new ChainMonitor(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(chain_source);
*/
public Listen as_Listen() {
long ret = bindings.ChainMonitor_as_Listen(this.ptr);
+ if (ret < 1024) { return null; }
Listen ret_hu_conv = new Listen(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Confirm as_Confirm() {
long ret = bindings.ChainMonitor_as_Confirm(this.ptr);
+ if (ret < 1024) { return null; }
Confirm ret_hu_conv = new Confirm(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Watch as_Watch() {
long ret = bindings.ChainMonitor_as_Watch(this.ptr);
+ if (ret < 1024) { return null; }
Watch ret_hu_conv = new Watch(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public EventsProvider as_EventsProvider() {
long ret = bindings.ChainMonitor_as_EventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
EventsProvider ret_hu_conv = new EventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public BestBlock get_best_block() {
long ret = bindings.ChainParameters_get_best_block(this.ptr);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChainParameters of(Network network_arg, BestBlock best_block_arg) {
long ret = bindings.ChainParameters_new(network_arg, best_block_arg == null ? 0 : best_block_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
ChainParameters ret_hu_conv = new ChainParameters(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(best_block_arg);
*/
public ChainParameters clone() {
long ret = bindings.ChainParameters_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChainParameters ret_hu_conv = new ChainParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public UnsignedChannelAnnouncement get_contents() {
long ret = bindings.ChannelAnnouncement_get_contents(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedChannelAnnouncement ret_hu_conv = new UnsignedChannelAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelAnnouncement of(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, UnsignedChannelAnnouncement contents_arg) {
long ret = bindings.ChannelAnnouncement_new(node_signature_1_arg, node_signature_2_arg, bitcoin_signature_1_arg, bitcoin_signature_2_arg, contents_arg == null ? 0 : contents_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(contents_arg);
*/
public ChannelAnnouncement clone() {
long ret = bindings.ChannelAnnouncement_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelAnnouncementDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelAnnouncement_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ChannelConfig of(int forwarding_fee_proportional_millionths_arg, int forwarding_fee_base_msat_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg) {
long ret = bindings.ChannelConfig_new(forwarding_fee_proportional_millionths_arg, forwarding_fee_base_msat_arg, cltv_expiry_delta_arg, announced_channel_arg, commit_upfront_shutdown_pubkey_arg);
+ if (ret < 1024) { return null; }
ChannelConfig ret_hu_conv = new ChannelConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelConfig clone() {
long ret = bindings.ChannelConfig_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelConfig ret_hu_conv = new ChannelConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelConfig with_default() {
long ret = bindings.ChannelConfig_default();
+ if (ret < 1024) { return null; }
ChannelConfig ret_hu_conv = new ChannelConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_ChannelConfigDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelConfig_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public InitFeatures get_features() {
long ret = bindings.ChannelCounterparty_get_features(this.ptr);
+ if (ret < 1024) { return null; }
InitFeatures ret_hu_conv = new InitFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelCounterparty clone() {
long ret = bindings.ChannelCounterparty_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelCounterparty ret_hu_conv = new ChannelCounterparty(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
import org.ldk.impl.bindings;
import org.ldk.enums.*;
import org.ldk.util.*;
+
+import javax.annotation.Nullable;
import java.util.Arrays;
*/
public ChannelCounterparty get_counterparty() {
long ret = bindings.ChannelDetails_get_counterparty(this.ptr);
+ if (ret < 1024) { return null; }
ChannelCounterparty ret_hu_conv = new ChannelCounterparty(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*
* Note that, if this has been set, `channel_id` will be equivalent to
* `funding_txo.unwrap().to_channel_id()`.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public OutPoint get_funding_txo() {
long ret = bindings.ChannelDetails_get_funding_txo(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*
* Note that, if this has been set, `channel_id` will be equivalent to
* `funding_txo.unwrap().to_channel_id()`.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_funding_txo(OutPoint val) {
+ public void set_funding_txo(@Nullable OutPoint val) {
bindings.ChannelDetails_set_funding_txo(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public Option_u64Z get_short_channel_id() {
long ret = bindings.ChannelDetails_get_short_channel_id(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u64Z get_unspendable_punishment_reserve() {
long ret = bindings.ChannelDetails_get_unspendable_punishment_reserve(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u32Z get_confirmations_required() {
long ret = bindings.ChannelDetails_get_confirmations_required(this.ptr);
+ if (ret < 1024) { return null; }
Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u16Z get_force_close_spend_delay() {
long ret = bindings.ChannelDetails_get_force_close_spend_delay(this.ptr);
+ if (ret < 1024) { return null; }
Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelDetails of(byte[] channel_id_arg, ChannelCounterparty counterparty_arg, OutPoint funding_txo_arg, Option_u64Z short_channel_id_arg, long channel_value_satoshis_arg, Option_u64Z unspendable_punishment_reserve_arg, long user_id_arg, long outbound_capacity_msat_arg, long inbound_capacity_msat_arg, Option_u32Z confirmations_required_arg, Option_u16Z force_close_spend_delay_arg, boolean is_outbound_arg, boolean is_funding_locked_arg, boolean is_usable_arg, boolean is_public_arg) {
long ret = bindings.ChannelDetails_new(channel_id_arg, counterparty_arg == null ? 0 : counterparty_arg.ptr & ~1, funding_txo_arg == null ? 0 : funding_txo_arg.ptr & ~1, short_channel_id_arg.ptr, channel_value_satoshis_arg, unspendable_punishment_reserve_arg.ptr, user_id_arg, outbound_capacity_msat_arg, inbound_capacity_msat_arg, confirmations_required_arg.ptr, force_close_spend_delay_arg.ptr, is_outbound_arg, is_funding_locked_arg, is_usable_arg, is_public_arg);
+ if (ret < 1024) { return null; }
ChannelDetails ret_hu_conv = new ChannelDetails(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(counterparty_arg);
*/
public ChannelDetails clone() {
long ret = bindings.ChannelDetails_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelDetails ret_hu_conv = new ChannelDetails(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelFeatures clone() {
long ret = bindings.ChannelFeatures_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelFeatures empty() {
long ret = bindings.ChannelFeatures_empty();
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static ChannelFeatures known() {
long ret = bindings.ChannelFeatures_known();
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_ChannelFeaturesDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelFeatures_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ChannelHandshakeConfig of(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg) {
long ret = bindings.ChannelHandshakeConfig_new(minimum_depth_arg, our_to_self_delay_arg, our_htlc_minimum_msat_arg);
+ if (ret < 1024) { return null; }
ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelHandshakeConfig clone() {
long ret = bindings.ChannelHandshakeConfig_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelHandshakeConfig with_default() {
long ret = bindings.ChannelHandshakeConfig_default();
+ if (ret < 1024) { return null; }
ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static ChannelHandshakeLimits of(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, short min_max_accepted_htlcs_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, short their_to_self_delay_arg) {
long ret = bindings.ChannelHandshakeLimits_new(min_funding_satoshis_arg, max_htlc_minimum_msat_arg, min_max_htlc_value_in_flight_msat_arg, max_channel_reserve_satoshis_arg, min_max_accepted_htlcs_arg, max_minimum_depth_arg, force_announced_channel_preference_arg, their_to_self_delay_arg);
+ if (ret < 1024) { return null; }
ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelHandshakeLimits clone() {
long ret = bindings.ChannelHandshakeLimits_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelHandshakeLimits with_default() {
long ret = bindings.ChannelHandshakeLimits_default();
+ if (ret < 1024) { return null; }
ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelFeatures get_features() {
long ret = bindings.ChannelInfo_get_features(this.ptr);
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* Details about the first direction of a channel
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public DirectionalChannelInfo get_one_to_two() {
long ret = bindings.ChannelInfo_get_one_to_two(this.ptr);
+ if (ret < 1024) { return null; }
DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* Details about the first direction of a channel
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_one_to_two(DirectionalChannelInfo val) {
+ public void set_one_to_two(@Nullable DirectionalChannelInfo val) {
bindings.ChannelInfo_set_one_to_two(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
/**
* Details about the second direction of a channel
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public DirectionalChannelInfo get_two_to_one() {
long ret = bindings.ChannelInfo_get_two_to_one(this.ptr);
+ if (ret < 1024) { return null; }
DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* Details about the second direction of a channel
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_two_to_one(DirectionalChannelInfo val) {
+ public void set_two_to_one(@Nullable DirectionalChannelInfo val) {
bindings.ChannelInfo_set_two_to_one(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public Option_u64Z get_capacity_sats() {
long ret = bindings.ChannelInfo_get_capacity_sats(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public ChannelAnnouncement get_announcement_message() {
long ret = bindings.ChannelInfo_get_announcement_message(this.ptr);
+ if (ret < 1024) { return null; }
ChannelAnnouncement ret_hu_conv = new ChannelAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_announcement_message(ChannelAnnouncement val) {
+ public void set_announcement_message(@Nullable ChannelAnnouncement val) {
bindings.ChannelInfo_set_announcement_message(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public static ChannelInfo of(ChannelFeatures features_arg, byte[] node_one_arg, DirectionalChannelInfo one_to_two_arg, byte[] node_two_arg, DirectionalChannelInfo two_to_one_arg, Option_u64Z capacity_sats_arg, ChannelAnnouncement announcement_message_arg) {
long ret = bindings.ChannelInfo_new(features_arg == null ? 0 : features_arg.ptr & ~1, node_one_arg, one_to_two_arg == null ? 0 : one_to_two_arg.ptr & ~1, node_two_arg, two_to_one_arg == null ? 0 : two_to_one_arg.ptr & ~1, capacity_sats_arg.ptr, announcement_message_arg == null ? 0 : announcement_message_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
ChannelInfo ret_hu_conv = new ChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(features_arg);
*/
public ChannelInfo clone() {
long ret = bindings.ChannelInfo_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelInfo ret_hu_conv = new ChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelInfoDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelInfo_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ChannelManager of(FeeEstimator fee_est, Watch chain_monitor, BroadcasterInterface tx_broadcaster, Logger logger, KeysInterface keys_manager, UserConfig config, ChainParameters params) {
long ret = bindings.ChannelManager_new(fee_est == null ? 0 : fee_est.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, logger == null ? 0 : logger.ptr, keys_manager == null ? 0 : keys_manager.ptr, config == null ? 0 : config.ptr & ~1, params == null ? 0 : params.ptr & ~1);
+ if (ret < 1024) { return null; }
ChannelManager ret_hu_conv = new ChannelManager(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(fee_est);
*/
public UserConfig get_current_default_configuration() {
long ret = bindings.ChannelManager_get_current_default_configuration(this.ptr);
+ if (ret < 1024) { return null; }
UserConfig ret_hu_conv = new UserConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Note that we do not check if you are currently connected to the given peer. If no
* connection is available, the outbound `open_channel` message may fail to send, resulting in
* the channel eventually being silently forgotten.
+ *
+ * Note that override_config (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
public Result_NoneAPIErrorZ create_channel(byte[] their_network_key, long channel_value_satoshis, long push_msat, long user_id, UserConfig override_config) {
long ret = bindings.ChannelManager_create_channel(this.ptr, their_network_key, channel_value_satoshis, push_msat, user_id, override_config == null ? 0 : override_config.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(override_config);
return ret_hu_conv;
*/
public Result_NoneAPIErrorZ close_channel(byte[] channel_id) {
long ret = bindings.ChannelManager_close_channel(this.ptr, channel_id);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NoneAPIErrorZ force_close_channel(byte[] channel_id) {
long ret = bindings.ChannelManager_force_close_channel(this.ptr, channel_id);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
* If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
* bit set (either as required or as available). If multiple paths are present in the Route,
* we assume the invoice had the basic_mpp feature set.
+ *
+ * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
public Result_NonePaymentSendFailureZ send_payment(Route route, byte[] payment_hash, byte[] payment_secret) {
long ret = bindings.ChannelManager_send_payment(this.ptr, route == null ? 0 : route.ptr & ~1, payment_hash, payment_secret);
+ if (ret < 1024) { return null; }
Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
this.ptrs_to.add(route);
return ret_hu_conv;
}
+ /**
+ * Send a spontaneous payment, which is a payment that does not require the recipient to have
+ * generated an invoice. Optionally, you may specify the preimage. If you do choose to specify
+ * the preimage, it must be a cryptographically secure random value that no intermediate node
+ * would be able to guess -- otherwise, an intermediate node may claim the payment and it will
+ * never reach the recipient.
+ *
+ * Similar to regular payments, you MUST NOT reuse a `payment_preimage` value. See
+ * [`send_payment`] for more information about the risks of duplicate preimage usage.
+ *
+ * [`send_payment`]: Self::send_payment
+ *
+ * Note that payment_preimage (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ public Result_PaymentHashPaymentSendFailureZ send_spontaneous_payment(Route route, @Nullable byte[] payment_preimage) {
+ long ret = bindings.ChannelManager_send_spontaneous_payment(this.ptr, route == null ? 0 : route.ptr & ~1, payment_preimage);
+ if (ret < 1024) { return null; }
+ Result_PaymentHashPaymentSendFailureZ ret_hu_conv = Result_PaymentHashPaymentSendFailureZ.constr_from_ptr(ret);
+ this.ptrs_to.add(route);
+ return ret_hu_conv;
+ }
+
/**
* Call this upon creation of a funding transaction for the given channel.
*
*/
public Result_NoneAPIErrorZ funding_transaction_generated(byte[] temporary_channel_id, byte[] funding_transaction) {
long ret = bindings.ChannelManager_funding_transaction_generated(this.ptr, temporary_channel_id, funding_transaction);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public TwoTuple<byte[], byte[]> create_inbound_payment(Option_u64Z min_value_msat, int invoice_expiry_delta_secs, long user_payment_id) {
long ret = bindings.ChannelManager_create_inbound_payment(this.ptr, min_value_msat.ptr, invoice_expiry_delta_secs, user_payment_id);
+ if (ret < 1024) { return null; }
byte[] ret_a = bindings.LDKC2Tuple_PaymentHashPaymentSecretZ_get_a(ret);
byte[] ret_b = bindings.LDKC2Tuple_PaymentHashPaymentSecretZ_get_b(ret);
TwoTuple<byte[], byte[]> ret_conv = new TwoTuple<byte[], byte[]>(ret_a, ret_b, () -> {
* The [`PaymentHash`] (and corresponding [`PaymentPreimage`]) must be globally unique. This
* method may return an Err if another payment with the same payment_hash is still pending.
*
- * `user_payment_id` will be provided back in [`PaymentReceived::user_payment_id`] events to
+ * `user_payment_id` will be provided back in [`PaymentPurpose::InvoicePayment::user_payment_id`] events to
* allow tracking of which events correspond with which calls to this and
* [`create_inbound_payment`]. `user_payment_id` has no meaning inside of LDK, it is simply
* copied to events and otherwise ignored. It may be used to correlate PaymentReceived events
*
* [`create_inbound_payment`]: Self::create_inbound_payment
* [`PaymentReceived`]: events::Event::PaymentReceived
- * [`PaymentReceived::user_payment_id`]: events::Event::PaymentReceived::user_payment_id
+ * [`PaymentPurpose::InvoicePayment::user_payment_id`]: events::PaymentPurpose::InvoicePayment::user_payment_id
*/
public Result_PaymentSecretAPIErrorZ create_inbound_payment_for_hash(byte[] payment_hash, Option_u64Z min_value_msat, int invoice_expiry_delta_secs, long user_payment_id) {
long ret = bindings.ChannelManager_create_inbound_payment_for_hash(this.ptr, payment_hash, min_value_msat.ptr, invoice_expiry_delta_secs, user_payment_id);
+ if (ret < 1024) { return null; }
Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public MessageSendEventsProvider as_MessageSendEventsProvider() {
long ret = bindings.ChannelManager_as_MessageSendEventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public EventsProvider as_EventsProvider() {
long ret = bindings.ChannelManager_as_EventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
EventsProvider ret_hu_conv = new EventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Listen as_Listen() {
long ret = bindings.ChannelManager_as_Listen(this.ptr);
+ if (ret < 1024) { return null; }
Listen ret_hu_conv = new Listen(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Confirm as_Confirm() {
long ret = bindings.ChannelManager_as_Confirm(this.ptr);
+ if (ret < 1024) { return null; }
Confirm ret_hu_conv = new Confirm(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public BestBlock current_best_block() {
long ret = bindings.ChannelManager_current_best_block(this.ptr);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelMessageHandler as_ChannelMessageHandler() {
long ret = bindings.ChannelManager_as_ChannelMessageHandler(this.ptr);
+ if (ret < 1024) { return null; }
ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_NoneErrorZ persist_manager(ChannelManager channel_manager) {
long ret = bindings.ChannelManagerPersister_persist_manager(this.ptr, channel_manager == null ? 0 : channel_manager.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(channel_manager);
return ret_hu_conv;
*/
public KeysInterface get_keys_manager() {
long ret = bindings.ChannelManagerReadArgs_get_keys_manager(this.ptr);
+ if (ret < 1024) { return null; }
KeysInterface ret_hu_conv = new KeysInterface(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public FeeEstimator get_fee_estimator() {
long ret = bindings.ChannelManagerReadArgs_get_fee_estimator(this.ptr);
+ if (ret < 1024) { return null; }
FeeEstimator ret_hu_conv = new FeeEstimator(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Watch get_chain_monitor() {
long ret = bindings.ChannelManagerReadArgs_get_chain_monitor(this.ptr);
+ if (ret < 1024) { return null; }
Watch ret_hu_conv = new Watch(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public BroadcasterInterface get_tx_broadcaster() {
long ret = bindings.ChannelManagerReadArgs_get_tx_broadcaster(this.ptr);
+ if (ret < 1024) { return null; }
BroadcasterInterface ret_hu_conv = new BroadcasterInterface(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Logger get_logger() {
long ret = bindings.ChannelManagerReadArgs_get_logger(this.ptr);
+ if (ret < 1024) { return null; }
Logger ret_hu_conv = new Logger(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public UserConfig get_default_config() {
long ret = bindings.ChannelManagerReadArgs_get_default_config(this.ptr);
+ if (ret < 1024) { return null; }
UserConfig ret_hu_conv = new UserConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelManagerReadArgs of(KeysInterface keys_manager, FeeEstimator fee_estimator, Watch chain_monitor, BroadcasterInterface tx_broadcaster, Logger logger, UserConfig default_config, ChannelMonitor[] channel_monitors) {
long ret = bindings.ChannelManagerReadArgs_new(keys_manager == null ? 0 : keys_manager.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, logger == null ? 0 : logger.ptr, default_config == null ? 0 : default_config.ptr & ~1, Arrays.stream(channel_monitors).mapToLong(channel_monitors_conv_16 -> channel_monitors_conv_16 == null ? 0 : channel_monitors_conv_16.ptr & ~1).toArray());
+ if (ret < 1024) { return null; }
ChannelManagerReadArgs ret_hu_conv = new ChannelManagerReadArgs(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(keys_manager);
}, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
return impl_holder.held;
}
+
+ /**
+ * Gets the underlying MessageSendEventsProvider.
+ */
+ public MessageSendEventsProvider get_message_send_events_provider() {
+ MessageSendEventsProvider res = new MessageSendEventsProvider(null, bindings.LDKChannelMessageHandler_get_MessageSendEventsProvider(this.ptr));
+ this.ptrs_to.add(res);
+ return res;
+ }
+
/**
* Handle an incoming open_channel message from the given peer.
*/
*/
public ChannelMonitor clone() {
long ret = bindings.ChannelMonitor_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelMonitor ret_hu_conv = new ChannelMonitor(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_NoneMonitorUpdateErrorZ update_monitor(ChannelMonitorUpdate updates, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
long ret = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0 : updates.ptr & ~1, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
Result_NoneMonitorUpdateErrorZ ret_hu_conv = Result_NoneMonitorUpdateErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(updates);
this.ptrs_to.add(broadcaster);
*/
public TwoTuple<OutPoint, byte[]> get_funding_txo() {
long ret = bindings.ChannelMonitor_get_funding_txo(this.ptr);
+ if (ret < 1024) { return null; }
long ret_a = bindings.LDKC2Tuple_OutPointScriptZ_get_a(ret);
OutPoint ret_a_hu_conv = new OutPoint(null, ret_a);
ret_a_hu_conv.ptrs_to.add(this);;
*/
public BestBlock current_best_block() {
long ret = bindings.ChannelMonitor_current_best_block(this.ptr);
+ if (ret < 1024) { return null; }
BestBlock ret_hu_conv = new BestBlock(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelMonitorUpdate clone() {
long ret = bindings.ChannelMonitorUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelMonitorUpdate ret_hu_conv = new ChannelMonitorUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelMonitorUpdateDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelMonitorUpdate_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ChannelPublicKeys of(byte[] funding_pubkey_arg, byte[] revocation_basepoint_arg, byte[] payment_point_arg, byte[] delayed_payment_basepoint_arg, byte[] htlc_basepoint_arg) {
long ret = bindings.ChannelPublicKeys_new(funding_pubkey_arg, revocation_basepoint_arg, payment_point_arg, delayed_payment_basepoint_arg, htlc_basepoint_arg);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelPublicKeys clone() {
long ret = bindings.ChannelPublicKeys_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelPublicKeysDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelPublicKeys_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public ChannelReestablish clone() {
long ret = bindings.ChannelReestablish_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelReestablish ret_hu_conv = new ChannelReestablish(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelReestablishDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelReestablish_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public ChannelPublicKeys get_holder_pubkeys() {
long ret = bindings.ChannelTransactionParameters_get_holder_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* The late-bound counterparty channel transaction parameters.
* These parameters are populated at the point in the protocol where the counterparty provides them.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public CounterpartyChannelTransactionParameters get_counterparty_parameters() {
long ret = bindings.ChannelTransactionParameters_get_counterparty_parameters(this.ptr);
+ if (ret < 1024) { return null; }
CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* The late-bound counterparty channel transaction parameters.
* These parameters are populated at the point in the protocol where the counterparty provides them.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_counterparty_parameters(CounterpartyChannelTransactionParameters val) {
+ public void set_counterparty_parameters(@Nullable CounterpartyChannelTransactionParameters val) {
bindings.ChannelTransactionParameters_set_counterparty_parameters(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
/**
* The late-bound funding outpoint
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public OutPoint get_funding_outpoint() {
long ret = bindings.ChannelTransactionParameters_get_funding_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* The late-bound funding outpoint
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_funding_outpoint(OutPoint val) {
+ public void set_funding_outpoint(@Nullable OutPoint val) {
bindings.ChannelTransactionParameters_set_funding_outpoint(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public static ChannelTransactionParameters of(ChannelPublicKeys holder_pubkeys_arg, short holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, CounterpartyChannelTransactionParameters counterparty_parameters_arg, OutPoint funding_outpoint_arg) {
long ret = bindings.ChannelTransactionParameters_new(holder_pubkeys_arg == null ? 0 : holder_pubkeys_arg.ptr & ~1, holder_selected_contest_delay_arg, is_outbound_from_holder_arg, counterparty_parameters_arg == null ? 0 : counterparty_parameters_arg.ptr & ~1, funding_outpoint_arg == null ? 0 : funding_outpoint_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(holder_pubkeys_arg);
*/
public ChannelTransactionParameters clone() {
long ret = bindings.ChannelTransactionParameters_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public DirectedChannelTransactionParameters as_holder_broadcastable() {
long ret = bindings.ChannelTransactionParameters_as_holder_broadcastable(this.ptr);
+ if (ret < 1024) { return null; }
DirectedChannelTransactionParameters ret_hu_conv = new DirectedChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public DirectedChannelTransactionParameters as_counterparty_broadcastable() {
long ret = bindings.ChannelTransactionParameters_as_counterparty_broadcastable(this.ptr);
+ if (ret < 1024) { return null; }
DirectedChannelTransactionParameters ret_hu_conv = new DirectedChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelTransactionParametersDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelTransactionParameters_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public UnsignedChannelUpdate get_contents() {
long ret = bindings.ChannelUpdate_get_contents(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedChannelUpdate ret_hu_conv = new UnsignedChannelUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ChannelUpdate of(byte[] signature_arg, UnsignedChannelUpdate contents_arg) {
long ret = bindings.ChannelUpdate_new(signature_arg, contents_arg == null ? 0 : contents_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(contents_arg);
*/
public ChannelUpdate clone() {
long ret = bindings.ChannelUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ChannelUpdateDecodeErrorZ read(byte[] ser) {
long ret = bindings.ChannelUpdate_read(ser);
+ if (ret < 1024) { return null; }
Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ClosingSigned of(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg) {
long ret = bindings.ClosingSigned_new(channel_id_arg, fee_satoshis_arg, signature_arg);
+ if (ret < 1024) { return null; }
ClosingSigned ret_hu_conv = new ClosingSigned(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ClosingSigned clone() {
long ret = bindings.ClosingSigned_clone(this.ptr);
+ if (ret < 1024) { return null; }
ClosingSigned ret_hu_conv = new ClosingSigned(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ClosingSignedDecodeErrorZ read(byte[] ser) {
long ret = bindings.ClosingSigned_read(ser);
+ if (ret < 1024) { return null; }
Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static CommitmentSigned of(byte[] channel_id_arg, byte[] signature_arg, byte[][] htlc_signatures_arg) {
long ret = bindings.CommitmentSigned_new(channel_id_arg, signature_arg, htlc_signatures_arg);
+ if (ret < 1024) { return null; }
CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public CommitmentSigned clone() {
long ret = bindings.CommitmentSigned_clone(this.ptr);
+ if (ret < 1024) { return null; }
CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_CommitmentSignedDecodeErrorZ read(byte[] ser) {
long ret = bindings.CommitmentSigned_read(ser);
+ if (ret < 1024) { return null; }
Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public CommitmentTransaction clone() {
long ret = bindings.CommitmentTransaction_clone(this.ptr);
+ if (ret < 1024) { return null; }
CommitmentTransaction ret_hu_conv = new CommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_CommitmentTransactionDecodeErrorZ read(byte[] ser) {
long ret = bindings.CommitmentTransaction_read(ser);
+ if (ret < 1024) { return null; }
Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public TrustedCommitmentTransaction trust() {
long ret = bindings.CommitmentTransaction_trust(this.ptr);
+ if (ret < 1024) { return null; }
TrustedCommitmentTransaction ret_hu_conv = new TrustedCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_TrustedCommitmentTransactionNoneZ verify(DirectedChannelTransactionParameters channel_parameters, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) {
long ret = bindings.CommitmentTransaction_verify(this.ptr, channel_parameters == null ? 0 : channel_parameters.ptr & ~1, broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(channel_parameters);
this.ptrs_to.add(broadcaster_keys);
/**
* An update_fee message which should be sent
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public UpdateFee get_update_fee() {
long ret = bindings.CommitmentUpdate_get_update_fee(this.ptr);
+ if (ret < 1024) { return null; }
UpdateFee ret_hu_conv = new UpdateFee(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
/**
* An update_fee message which should be sent
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_update_fee(UpdateFee val) {
+ public void set_update_fee(@Nullable UpdateFee val) {
bindings.CommitmentUpdate_set_update_fee(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public CommitmentSigned get_commitment_signed() {
long ret = bindings.CommitmentUpdate_get_commitment_signed(this.ptr);
+ if (ret < 1024) { return null; }
CommitmentSigned ret_hu_conv = new CommitmentSigned(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static CommitmentUpdate of(UpdateAddHTLC[] update_add_htlcs_arg, UpdateFulfillHTLC[] update_fulfill_htlcs_arg, UpdateFailHTLC[] update_fail_htlcs_arg, UpdateFailMalformedHTLC[] update_fail_malformed_htlcs_arg, UpdateFee update_fee_arg, CommitmentSigned commitment_signed_arg) {
long ret = bindings.CommitmentUpdate_new(Arrays.stream(update_add_htlcs_arg).mapToLong(update_add_htlcs_arg_conv_15 -> update_add_htlcs_arg_conv_15 == null ? 0 : update_add_htlcs_arg_conv_15.ptr & ~1).toArray(), Arrays.stream(update_fulfill_htlcs_arg).mapToLong(update_fulfill_htlcs_arg_conv_19 -> update_fulfill_htlcs_arg_conv_19 == null ? 0 : update_fulfill_htlcs_arg_conv_19.ptr & ~1).toArray(), Arrays.stream(update_fail_htlcs_arg).mapToLong(update_fail_htlcs_arg_conv_16 -> update_fail_htlcs_arg_conv_16 == null ? 0 : update_fail_htlcs_arg_conv_16.ptr & ~1).toArray(), Arrays.stream(update_fail_malformed_htlcs_arg).mapToLong(update_fail_malformed_htlcs_arg_conv_25 -> update_fail_malformed_htlcs_arg_conv_25 == null ? 0 : update_fail_malformed_htlcs_arg_conv_25.ptr & ~1).toArray(), update_fee_arg == null ? 0 : update_fee_arg.ptr & ~1, commitment_signed_arg == null ? 0 : commitment_signed_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
CommitmentUpdate ret_hu_conv = new CommitmentUpdate(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
/* TODO 2 UpdateAddHTLC */;
*/
public CommitmentUpdate clone() {
long ret = bindings.CommitmentUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
CommitmentUpdate ret_hu_conv = new CommitmentUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
class CommonBase {
long ptr;
LinkedList<Object> ptrs_to = new LinkedList();
- protected CommonBase(long ptr) { this.ptr = ptr; }
+ protected CommonBase(long ptr) { assert ptr > 1024; this.ptr = ptr; }
}
*/
public ChannelPublicKeys get_pubkeys() {
long ret = bindings.CounterpartyChannelTransactionParameters_get_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static CounterpartyChannelTransactionParameters of(ChannelPublicKeys pubkeys_arg, short selected_contest_delay_arg) {
long ret = bindings.CounterpartyChannelTransactionParameters_new(pubkeys_arg == null ? 0 : pubkeys_arg.ptr & ~1, selected_contest_delay_arg);
+ if (ret < 1024) { return null; }
CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(pubkeys_arg);
*/
public CounterpartyChannelTransactionParameters clone() {
long ret = bindings.CounterpartyChannelTransactionParameters_clone(this.ptr);
+ if (ret < 1024) { return null; }
CounterpartyChannelTransactionParameters ret_hu_conv = new CounterpartyChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ read(byte[] ser) {
long ret = bindings.CounterpartyChannelTransactionParameters_read(ser);
+ if (ret < 1024) { return null; }
Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static DataLossProtect of(byte[] your_last_per_commitment_secret_arg, byte[] my_current_per_commitment_point_arg) {
long ret = bindings.DataLossProtect_new(your_last_per_commitment_secret_arg, my_current_per_commitment_point_arg);
+ if (ret < 1024) { return null; }
DataLossProtect ret_hu_conv = new DataLossProtect(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public DataLossProtect clone() {
long ret = bindings.DataLossProtect_clone(this.ptr);
+ if (ret < 1024) { return null; }
DataLossProtect ret_hu_conv = new DataLossProtect(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public DecodeError clone() {
long ret = bindings.DecodeError_clone(this.ptr);
+ if (ret < 1024) { return null; }
DecodeError ret_hu_conv = new DecodeError(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public OutPoint get_outpoint() {
long ret = bindings.DelayedPaymentOutputDescriptor_get_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static DelayedPaymentOutputDescriptor of(OutPoint outpoint_arg, byte[] per_commitment_point_arg, short to_self_delay_arg, TxOut output_arg, byte[] revocation_pubkey_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg) {
long ret = bindings.DelayedPaymentOutputDescriptor_new(outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, per_commitment_point_arg, to_self_delay_arg, output_arg.ptr, revocation_pubkey_arg, channel_keys_id_arg, channel_value_satoshis_arg);
+ if (ret < 1024) { return null; }
DelayedPaymentOutputDescriptor ret_hu_conv = new DelayedPaymentOutputDescriptor(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(outpoint_arg);
*/
public DelayedPaymentOutputDescriptor clone() {
long ret = bindings.DelayedPaymentOutputDescriptor_clone(this.ptr);
+ if (ret < 1024) { return null; }
DelayedPaymentOutputDescriptor ret_hu_conv = new DelayedPaymentOutputDescriptor(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_DelayedPaymentOutputDescriptorDecodeErrorZ read(byte[] ser) {
long ret = bindings.DelayedPaymentOutputDescriptor_read(ser);
+ if (ret < 1024) { return null; }
Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Description clone() {
long ret = bindings.Description_clone(this.ptr);
+ if (ret < 1024) { return null; }
Description ret_hu_conv = new Description(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_DescriptionCreationErrorZ of(String description) {
long ret = bindings.Description_new(description);
+ if (ret < 1024) { return null; }
Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public ChannelPublicKeys broadcaster_pubkeys() {
long ret = bindings.DirectedChannelTransactionParameters_broadcaster_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelPublicKeys countersignatory_pubkeys() {
long ret = bindings.DirectedChannelTransactionParameters_countersignatory_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public OutPoint funding_outpoint() {
long ret = bindings.DirectedChannelTransactionParameters_funding_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u64Z get_htlc_maximum_msat() {
long ret = bindings.DirectionalChannelInfo_get_htlc_maximum_msat(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RoutingFees get_fees() {
long ret = bindings.DirectionalChannelInfo_get_fees(this.ptr);
+ if (ret < 1024) { return null; }
RoutingFees ret_hu_conv = new RoutingFees(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public ChannelUpdate get_last_update_message() {
long ret = bindings.DirectionalChannelInfo_get_last_update_message(this.ptr);
+ if (ret < 1024) { return null; }
ChannelUpdate ret_hu_conv = new ChannelUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_last_update_message(ChannelUpdate val) {
+ public void set_last_update_message(@Nullable ChannelUpdate val) {
bindings.DirectionalChannelInfo_set_last_update_message(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public static DirectionalChannelInfo of(int last_update_arg, boolean enabled_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg, Option_u64Z htlc_maximum_msat_arg, RoutingFees fees_arg, ChannelUpdate last_update_message_arg) {
long ret = bindings.DirectionalChannelInfo_new(last_update_arg, enabled_arg, cltv_expiry_delta_arg, htlc_minimum_msat_arg, htlc_maximum_msat_arg.ptr, fees_arg == null ? 0 : fees_arg.ptr & ~1, last_update_message_arg == null ? 0 : last_update_message_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(fees_arg);
*/
public DirectionalChannelInfo clone() {
long ret = bindings.DirectionalChannelInfo_clone(this.ptr);
+ if (ret < 1024) { return null; }
DirectionalChannelInfo ret_hu_conv = new DirectionalChannelInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_DirectionalChannelInfoDecodeErrorZ read(byte[] ser) {
long ret = bindings.DirectionalChannelInfo_read(ser);
+ if (ret < 1024) { return null; }
Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public ErrorAction clone() {
long ret = bindings.ErrorAction_clone(this.ptr);
+ if (ret < 1024) { return null; }
ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static ErrorMessage of(byte[] channel_id_arg, String data_arg) {
long ret = bindings.ErrorMessage_new(channel_id_arg, data_arg);
+ if (ret < 1024) { return null; }
ErrorMessage ret_hu_conv = new ErrorMessage(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ErrorMessage clone() {
long ret = bindings.ErrorMessage_clone(this.ptr);
+ if (ret < 1024) { return null; }
ErrorMessage ret_hu_conv = new ErrorMessage(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ErrorMessageDecodeErrorZ read(byte[] ser) {
long ret = bindings.ErrorMessage_read(ser);
+ if (ret < 1024) { return null; }
Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ErroringMessageHandler of() {
long ret = bindings.ErroringMessageHandler_new();
+ if (ret < 1024) { return null; }
ErroringMessageHandler ret_hu_conv = new ErroringMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public MessageSendEventsProvider as_MessageSendEventsProvider() {
long ret = bindings.ErroringMessageHandler_as_MessageSendEventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelMessageHandler as_ChannelMessageHandler() {
long ret = bindings.ErroringMessageHandler_as_ChannelMessageHandler(this.ptr);
+ if (ret < 1024) { return null; }
ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
public final static class PaymentReceived extends Event {
public final byte[] payment_hash;
- public final byte[] payment_preimage;
- public final byte[] payment_secret;
public final long amt;
- public final long user_payment_id;
+ public final PaymentPurpose purpose;
private PaymentReceived(long ptr, bindings.LDKEvent.PaymentReceived obj) {
super(null, ptr);
this.payment_hash = obj.payment_hash;
- this.payment_preimage = obj.payment_preimage;
- this.payment_secret = obj.payment_secret;
this.amt = obj.amt;
- this.user_payment_id = obj.user_payment_id;
+ long purpose = obj.purpose;
+ PaymentPurpose purpose_hu_conv = PaymentPurpose.constr_from_ptr(purpose);
+ purpose_hu_conv.ptrs_to.add(this);
+ this.purpose = purpose_hu_conv;
}
}
public final static class PaymentSent extends Event {
*/
public Event clone() {
long ret = bindings.Event_clone(this.ptr);
+ if (ret < 1024) { return null; }
Event ret_hu_conv = Event.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ExpiryTime clone() {
long ret = bindings.ExpiryTime_clone(this.ptr);
+ if (ret < 1024) { return null; }
ExpiryTime ret_hu_conv = new ExpiryTime(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ExpiryTimeCreationErrorZ from_seconds(long seconds) {
long ret = bindings.ExpiryTime_from_seconds(seconds);
+ if (ret < 1024) { return null; }
Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ExpiryTimeCreationErrorZ from_duration(long duration) {
long ret = bindings.ExpiryTime_from_duration(duration);
+ if (ret < 1024) { return null; }
Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Fallback clone() {
long ret = bindings.Fallback_clone(this.ptr);
+ if (ret < 1024) { return null; }
Fallback ret_hu_conv = Fallback.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static FilesystemPersister of(String path_to_channel_data) {
long ret = bindings.FilesystemPersister_new(path_to_channel_data);
+ if (ret < 1024) { return null; }
FilesystemPersister ret_hu_conv = new FilesystemPersister(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ read_channelmonitors(KeysInterface keys_manager) {
long ret = bindings.FilesystemPersister_read_channelmonitors(this.ptr, keys_manager == null ? 0 : keys_manager.ptr);
+ if (ret < 1024) { return null; }
Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(keys_manager);
return ret_hu_conv;
*/
public Persist as_Persist() {
long ret = bindings.FilesystemPersister_as_Persist(this.ptr);
+ if (ret < 1024) { return null; }
Persist ret_hu_conv = new Persist(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_C2Tuple_usizeTransactionZZ register_output(WatchedOutput output) {
long ret = bindings.Filter_register_output(this.ptr, output == null ? 0 : output.ptr & ~1);
+ if (ret < 1024) { return null; }
Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
this.ptrs_to.add(output);
*/
public static FundingCreated of(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg) {
long ret = bindings.FundingCreated_new(temporary_channel_id_arg, funding_txid_arg, funding_output_index_arg, signature_arg);
+ if (ret < 1024) { return null; }
FundingCreated ret_hu_conv = new FundingCreated(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public FundingCreated clone() {
long ret = bindings.FundingCreated_clone(this.ptr);
+ if (ret < 1024) { return null; }
FundingCreated ret_hu_conv = new FundingCreated(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_FundingCreatedDecodeErrorZ read(byte[] ser) {
long ret = bindings.FundingCreated_read(ser);
+ if (ret < 1024) { return null; }
Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static FundingLocked of(byte[] channel_id_arg, byte[] next_per_commitment_point_arg) {
long ret = bindings.FundingLocked_new(channel_id_arg, next_per_commitment_point_arg);
+ if (ret < 1024) { return null; }
FundingLocked ret_hu_conv = new FundingLocked(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public FundingLocked clone() {
long ret = bindings.FundingLocked_clone(this.ptr);
+ if (ret < 1024) { return null; }
FundingLocked ret_hu_conv = new FundingLocked(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_FundingLockedDecodeErrorZ read(byte[] ser) {
long ret = bindings.FundingLocked_read(ser);
+ if (ret < 1024) { return null; }
Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static FundingSigned of(byte[] channel_id_arg, byte[] signature_arg) {
long ret = bindings.FundingSigned_new(channel_id_arg, signature_arg);
+ if (ret < 1024) { return null; }
FundingSigned ret_hu_conv = new FundingSigned(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public FundingSigned clone() {
long ret = bindings.FundingSigned_clone(this.ptr);
+ if (ret < 1024) { return null; }
FundingSigned ret_hu_conv = new FundingSigned(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_FundingSignedDecodeErrorZ read(byte[] ser) {
long ret = bindings.FundingSigned_read(ser);
+ if (ret < 1024) { return null; }
Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static GossipTimestampFilter of(byte[] chain_hash_arg, int first_timestamp_arg, int timestamp_range_arg) {
long ret = bindings.GossipTimestampFilter_new(chain_hash_arg, first_timestamp_arg, timestamp_range_arg);
+ if (ret < 1024) { return null; }
GossipTimestampFilter ret_hu_conv = new GossipTimestampFilter(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public GossipTimestampFilter clone() {
long ret = bindings.GossipTimestampFilter_clone(this.ptr);
+ if (ret < 1024) { return null; }
GossipTimestampFilter ret_hu_conv = new GossipTimestampFilter(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_GossipTimestampFilterDecodeErrorZ read(byte[] ser) {
long ret = bindings.GossipTimestampFilter_read(ser);
+ if (ret < 1024) { return null; }
Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public HTLCFailChannelUpdate clone() {
long ret = bindings.HTLCFailChannelUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
HTLCFailChannelUpdate ret_hu_conv = HTLCFailChannelUpdate.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u32Z get_transaction_output_index() {
long ret = bindings.HTLCOutputInCommitment_get_transaction_output_index(this.ptr);
+ if (ret < 1024) { return null; }
Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static HTLCOutputInCommitment of(boolean offered_arg, long amount_msat_arg, int cltv_expiry_arg, byte[] payment_hash_arg, Option_u32Z transaction_output_index_arg) {
long ret = bindings.HTLCOutputInCommitment_new(offered_arg, amount_msat_arg, cltv_expiry_arg, payment_hash_arg, transaction_output_index_arg.ptr);
+ if (ret < 1024) { return null; }
HTLCOutputInCommitment ret_hu_conv = new HTLCOutputInCommitment(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public HTLCOutputInCommitment clone() {
long ret = bindings.HTLCOutputInCommitment_clone(this.ptr);
+ if (ret < 1024) { return null; }
HTLCOutputInCommitment ret_hu_conv = new HTLCOutputInCommitment(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_HTLCOutputInCommitmentDecodeErrorZ read(byte[] ser) {
long ret = bindings.HTLCOutputInCommitment_read(ser);
+ if (ret < 1024) { return null; }
Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public HTLCUpdate clone() {
long ret = bindings.HTLCUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
HTLCUpdate ret_hu_conv = new HTLCUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_HTLCUpdateDecodeErrorZ read(byte[] ser) {
long ret = bindings.HTLCUpdate_read(ser);
+ if (ret < 1024) { return null; }
Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public HolderCommitmentTransaction clone() {
long ret = bindings.HolderCommitmentTransaction_clone(this.ptr);
+ if (ret < 1024) { return null; }
HolderCommitmentTransaction ret_hu_conv = new HolderCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_HolderCommitmentTransactionDecodeErrorZ read(byte[] ser) {
long ret = bindings.HolderCommitmentTransaction_read(ser);
+ if (ret < 1024) { return null; }
Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static HolderCommitmentTransaction of(CommitmentTransaction commitment_tx, byte[] counterparty_sig, byte[][] counterparty_htlc_sigs, byte[] holder_funding_key, byte[] counterparty_funding_key) {
long ret = bindings.HolderCommitmentTransaction_new(commitment_tx == null ? 0 : commitment_tx.ptr & ~1, counterparty_sig, counterparty_htlc_sigs, holder_funding_key, counterparty_funding_key);
+ if (ret < 1024) { return null; }
HolderCommitmentTransaction ret_hu_conv = new HolderCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(commitment_tx);
*/
public static IgnoringMessageHandler of() {
long ret = bindings.IgnoringMessageHandler_new();
+ if (ret < 1024) { return null; }
IgnoringMessageHandler ret_hu_conv = new IgnoringMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public MessageSendEventsProvider as_MessageSendEventsProvider() {
long ret = bindings.IgnoringMessageHandler_as_MessageSendEventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RoutingMessageHandler as_RoutingMessageHandler() {
long ret = bindings.IgnoringMessageHandler_as_RoutingMessageHandler(this.ptr);
+ if (ret < 1024) { return null; }
RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public InMemorySigner clone() {
long ret = bindings.InMemorySigner_clone(this.ptr);
+ if (ret < 1024) { return null; }
InMemorySigner ret_hu_conv = new InMemorySigner(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static InMemorySigner of(byte[] funding_key, byte[] revocation_base_key, byte[] payment_key, byte[] delayed_payment_base_key, byte[] htlc_base_key, byte[] commitment_seed, long channel_value_satoshis, byte[] channel_keys_id) {
long ret = bindings.InMemorySigner_new(funding_key, revocation_base_key, payment_key, delayed_payment_base_key, htlc_base_key, commitment_seed, channel_value_satoshis, channel_keys_id);
+ if (ret < 1024) { return null; }
InMemorySigner ret_hu_conv = new InMemorySigner(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ChannelPublicKeys counterparty_pubkeys() {
long ret = bindings.InMemorySigner_counterparty_pubkeys(this.ptr);
+ if (ret < 1024) { return null; }
ChannelPublicKeys ret_hu_conv = new ChannelPublicKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public OutPoint funding_outpoint() {
long ret = bindings.InMemorySigner_funding_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelTransactionParameters get_channel_parameters() {
long ret = bindings.InMemorySigner_get_channel_parameters(this.ptr);
+ if (ret < 1024) { return null; }
ChannelTransactionParameters ret_hu_conv = new ChannelTransactionParameters(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_CVec_CVec_u8ZZNoneZ sign_counterparty_payment_input(byte[] spend_tx, long input_idx, StaticPaymentOutputDescriptor descriptor) {
long ret = bindings.InMemorySigner_sign_counterparty_payment_input(this.ptr, spend_tx, input_idx, descriptor == null ? 0 : descriptor.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(descriptor);
return ret_hu_conv;
*/
public Result_CVec_CVec_u8ZZNoneZ sign_dynamic_p2wsh_input(byte[] spend_tx, long input_idx, DelayedPaymentOutputDescriptor descriptor) {
long ret = bindings.InMemorySigner_sign_dynamic_p2wsh_input(this.ptr, spend_tx, input_idx, descriptor == null ? 0 : descriptor.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(descriptor);
return ret_hu_conv;
*/
public BaseSign as_BaseSign() {
long ret = bindings.InMemorySigner_as_BaseSign(this.ptr);
+ if (ret < 1024) { return null; }
BaseSign ret_hu_conv = new BaseSign(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Sign as_Sign() {
long ret = bindings.InMemorySigner_as_Sign(this.ptr);
+ if (ret < 1024) { return null; }
Sign ret_hu_conv = new Sign(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_InMemorySignerDecodeErrorZ read(byte[] ser) {
long ret = bindings.InMemorySigner_read(ser);
+ if (ret < 1024) { return null; }
Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public InitFeatures get_features() {
long ret = bindings.Init_get_features(this.ptr);
+ if (ret < 1024) { return null; }
InitFeatures ret_hu_conv = new InitFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Init of(InitFeatures features_arg) {
long ret = bindings.Init_new(features_arg == null ? 0 : features_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
Init ret_hu_conv = new Init(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(features_arg);
*/
public Init clone() {
long ret = bindings.Init_clone(this.ptr);
+ if (ret < 1024) { return null; }
Init ret_hu_conv = new Init(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_InitDecodeErrorZ read(byte[] ser) {
long ret = bindings.Init_read(ser);
+ if (ret < 1024) { return null; }
Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public InitFeatures clone() {
long ret = bindings.InitFeatures_clone(this.ptr);
+ if (ret < 1024) { return null; }
InitFeatures ret_hu_conv = new InitFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static InitFeatures empty() {
long ret = bindings.InitFeatures_empty();
+ if (ret < 1024) { return null; }
InitFeatures ret_hu_conv = new InitFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static InitFeatures known() {
long ret = bindings.InitFeatures_known();
+ if (ret < 1024) { return null; }
InitFeatures ret_hu_conv = new InitFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_InitFeaturesDecodeErrorZ read(byte[] ser) {
long ret = bindings.InitFeatures_read(ser);
+ if (ret < 1024) { return null; }
Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Invoice clone() {
long ret = bindings.Invoice_clone(this.ptr);
+ if (ret < 1024) { return null; }
Invoice ret_hu_conv = new Invoice(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public SignedRawInvoice into_signed_raw() {
long ret = bindings.Invoice_into_signed_raw(this.ptr);
+ if (ret < 1024) { return null; }
SignedRawInvoice ret_hu_conv = new SignedRawInvoice(null, ret);
ret_hu_conv.ptrs_to.add(this);
this.ptrs_to.add(this);
*/
public Result_NoneSemanticErrorZ check_signature() {
long ret = bindings.Invoice_check_signature(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InvoiceSemanticErrorZ from_signed(SignedRawInvoice signed_invoice) {
long ret = bindings.Invoice_from_signed(signed_invoice == null ? 0 : signed_invoice.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(signed_invoice);
return ret_hu_conv;
/**
* Get the payee's public key if one was included in the invoice
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public byte[] payee_pub_key() {
byte[] ret = bindings.Invoice_payee_pub_key(this.ptr);
return ret;
/**
* Get the payment secret if one was included in the invoice
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public byte[] payment_secret() {
byte[] ret = bindings.Invoice_payment_secret(this.ptr);
return ret;
/**
* Get the invoice features if they were included in the invoice
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public InvoiceFeatures features() {
long ret = bindings.Invoice_features(this.ptr);
+ if (ret < 1024) { return null; }
InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u64Z amount_pico_btc() {
long ret = bindings.Invoice_amount_pico_btc(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_InvoiceNoneZ from_str(String s) {
long ret = bindings.Invoice_from_str(s);
+ if (ret < 1024) { return null; }
Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public InvoiceFeatures clone() {
long ret = bindings.InvoiceFeatures_clone(this.ptr);
+ if (ret < 1024) { return null; }
InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static InvoiceFeatures empty() {
long ret = bindings.InvoiceFeatures_empty();
+ if (ret < 1024) { return null; }
InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static InvoiceFeatures known() {
long ret = bindings.InvoiceFeatures_known();
+ if (ret < 1024) { return null; }
InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_InvoiceFeaturesDecodeErrorZ read(byte[] ser) {
long ret = bindings.InvoiceFeatures_read(ser);
+ if (ret < 1024) { return null; }
Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public InvoiceSignature clone() {
long ret = bindings.InvoiceSignature_clone(this.ptr);
+ if (ret < 1024) { return null; }
InvoiceSignature ret_hu_conv = new InvoiceSignature(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Sign get_channel_signer(boolean inbound, long channel_value_satoshis) {
long ret = bindings.KeysInterface_get_channel_signer(this.ptr, inbound, channel_value_satoshis);
+ if (ret < 1024) { return null; }
Sign ret_hu_conv = new Sign(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_SignDecodeErrorZ read_chan_signer(byte[] reader) {
long ret = bindings.KeysInterface_read_chan_signer(this.ptr, reader);
+ if (ret < 1024) { return null; }
Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_RecoverableSignatureNoneZ sign_invoice(byte[] invoice_preimage) {
long ret = bindings.KeysInterface_sign_invoice(this.ptr, invoice_preimage);
+ if (ret < 1024) { return null; }
Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static KeysManager of(byte[] seed, long starting_time_secs, int starting_time_nanos) {
long ret = bindings.KeysManager_new(seed, starting_time_secs, starting_time_nanos);
+ if (ret < 1024) { return null; }
KeysManager ret_hu_conv = new KeysManager(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public InMemorySigner derive_channel_keys(long channel_value_satoshis, byte[] params) {
long ret = bindings.KeysManager_derive_channel_keys(this.ptr, channel_value_satoshis, params);
+ if (ret < 1024) { return null; }
InMemorySigner ret_hu_conv = new InMemorySigner(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_TransactionNoneZ spend_spendable_outputs(SpendableOutputDescriptor[] descriptors, TxOut[] outputs, byte[] change_destination_script, int feerate_sat_per_1000_weight) {
long ret = bindings.KeysManager_spend_spendable_outputs(this.ptr, Arrays.stream(descriptors).mapToLong(descriptors_conv_27 -> descriptors_conv_27.ptr).toArray(), Arrays.stream(outputs).mapToLong(outputs_conv_7 -> outputs_conv_7.ptr).toArray(), change_destination_script, feerate_sat_per_1000_weight);
+ if (ret < 1024) { return null; }
Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
/* TODO 2 SpendableOutputDescriptor */;
/* TODO 2 TxOut */;
*/
public KeysInterface as_KeysInterface() {
long ret = bindings.KeysManager_as_KeysInterface(this.ptr);
+ if (ret < 1024) { return null; }
KeysInterface ret_hu_conv = new KeysInterface(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ErrorAction get_action() {
long ret = bindings.LightningError_get_action(this.ptr);
+ if (ret < 1024) { return null; }
ErrorAction ret_hu_conv = ErrorAction.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static LightningError of(String err_arg, ErrorAction action_arg) {
long ret = bindings.LightningError_new(err_arg, action_arg.ptr);
+ if (ret < 1024) { return null; }
LightningError ret_hu_conv = new LightningError(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public LightningError clone() {
long ret = bindings.LightningError_clone(this.ptr);
+ if (ret < 1024) { return null; }
LightningError ret_hu_conv = new LightningError(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public NetworkGraph graph() {
long ret = bindings.LockedNetworkGraph_graph(this.ptr);
+ if (ret < 1024) { return null; }
NetworkGraph ret_hu_conv = new NetworkGraph(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelMessageHandler get_chan_handler() {
long ret = bindings.MessageHandler_get_chan_handler(this.ptr);
+ if (ret < 1024) { return null; }
ChannelMessageHandler ret_hu_conv = new ChannelMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RoutingMessageHandler get_route_handler() {
long ret = bindings.MessageHandler_get_route_handler(this.ptr);
+ if (ret < 1024) { return null; }
RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static MessageHandler of(ChannelMessageHandler chan_handler_arg, RoutingMessageHandler route_handler_arg) {
long ret = bindings.MessageHandler_new(chan_handler_arg == null ? 0 : chan_handler_arg.ptr, route_handler_arg == null ? 0 : route_handler_arg.ptr);
+ if (ret < 1024) { return null; }
MessageHandler ret_hu_conv = new MessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(chan_handler_arg);
*/
public MessageSendEvent clone() {
long ret = bindings.MessageSendEvent_clone(this.ptr);
+ if (ret < 1024) { return null; }
MessageSendEvent ret_hu_conv = MessageSendEvent.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public MinFinalCltvExpiry clone() {
long ret = bindings.MinFinalCltvExpiry_clone(this.ptr);
+ if (ret < 1024) { return null; }
MinFinalCltvExpiry ret_hu_conv = new MinFinalCltvExpiry(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public MonitorEvent clone() {
long ret = bindings.MonitorEvent_clone(this.ptr);
+ if (ret < 1024) { return null; }
MonitorEvent ret_hu_conv = MonitorEvent.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public MonitorUpdateError clone() {
long ret = bindings.MonitorUpdateError_clone(this.ptr);
+ if (ret < 1024) { return null; }
MonitorUpdateError ret_hu_conv = new MonitorUpdateError(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public NetAddress clone() {
long ret = bindings.NetAddress_clone(this.ptr);
+ if (ret < 1024) { return null; }
NetAddress ret_hu_conv = NetAddress.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_NetAddressDecodeErrorZ read(byte[] ser) {
long ret = bindings.NetAddress_read(ser);
+ if (ret < 1024) { return null; }
Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
* Chain monitor is used to make sure announced channels exist on-chain,
* channel data is correct, and that the announcement is signed with
* channel owners' keys.
+ *
+ * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public static NetGraphMsgHandler of(byte[] genesis_hash, Access chain_access, Logger logger) {
+ public static NetGraphMsgHandler of(byte[] genesis_hash, @Nullable Access chain_access, Logger logger) {
long ret = bindings.NetGraphMsgHandler_new(genesis_hash, chain_access == null ? 0 : chain_access.ptr, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
NetGraphMsgHandler ret_hu_conv = new NetGraphMsgHandler(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(chain_access);
/**
* Creates a new tracker of the actual state of the network of channels and nodes,
* assuming an existing Network Graph.
+ *
+ * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public static NetGraphMsgHandler from_net_graph(Access chain_access, Logger logger, NetworkGraph network_graph) {
+ public static NetGraphMsgHandler from_net_graph(@Nullable Access chain_access, Logger logger, NetworkGraph network_graph) {
long ret = bindings.NetGraphMsgHandler_from_net_graph(chain_access == null ? 0 : chain_access.ptr, logger == null ? 0 : logger.ptr, network_graph == null ? 0 : network_graph.ptr & ~1);
+ if (ret < 1024) { return null; }
NetGraphMsgHandler ret_hu_conv = new NetGraphMsgHandler(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(chain_access);
* Adds a provider used to check new announcements. Does not affect
* existing announcements unless they are updated.
* Add, update or remove the provider would replace the current one.
+ *
+ * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void add_chain_access(Access chain_access) {
+ public void add_chain_access(@Nullable Access chain_access) {
bindings.NetGraphMsgHandler_add_chain_access(this.ptr, chain_access == null ? 0 : chain_access.ptr);
this.ptrs_to.add(chain_access);
}
*/
public LockedNetworkGraph read_locked_graph() {
long ret = bindings.NetGraphMsgHandler_read_locked_graph(this.ptr);
+ if (ret < 1024) { return null; }
LockedNetworkGraph ret_hu_conv = new LockedNetworkGraph(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RoutingMessageHandler as_RoutingMessageHandler() {
long ret = bindings.NetGraphMsgHandler_as_RoutingMessageHandler(this.ptr);
+ if (ret < 1024) { return null; }
RoutingMessageHandler ret_hu_conv = new RoutingMessageHandler(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public MessageSendEventsProvider as_MessageSendEventsProvider() {
long ret = bindings.NetGraphMsgHandler_as_MessageSendEventsProvider(this.ptr);
+ if (ret < 1024) { return null; }
MessageSendEventsProvider ret_hu_conv = new MessageSendEventsProvider(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public NetworkGraph clone() {
long ret = bindings.NetworkGraph_clone(this.ptr);
+ if (ret < 1024) { return null; }
NetworkGraph ret_hu_conv = new NetworkGraph(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_NetworkGraphDecodeErrorZ read(byte[] ser) {
long ret = bindings.NetworkGraph_read(ser);
+ if (ret < 1024) { return null; }
Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static NetworkGraph of(byte[] genesis_hash) {
long ret = bindings.NetworkGraph_new(genesis_hash);
+ if (ret < 1024) { return null; }
NetworkGraph ret_hu_conv = new NetworkGraph(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ update_node_from_announcement(NodeAnnouncement msg) {
long ret = bindings.NetworkGraph_update_node_from_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ update_node_from_unsigned_announcement(UnsignedNodeAnnouncement msg) {
long ret = bindings.NetworkGraph_update_node_from_unsigned_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*
* If a `chain::Access` object is provided via `chain_access`, it will be called to verify
* the corresponding UTXO exists on chain and is correctly-formatted.
+ *
+ * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public Result_NoneLightningErrorZ update_channel_from_announcement(ChannelAnnouncement msg, Access chain_access) {
+ public Result_NoneLightningErrorZ update_channel_from_announcement(ChannelAnnouncement msg, @Nullable Access chain_access) {
long ret = bindings.NetworkGraph_update_channel_from_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1, chain_access == null ? 0 : chain_access.ptr);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
this.ptrs_to.add(chain_access);
*
* If a `chain::Access` object is provided via `chain_access`, it will be called to verify
* the corresponding UTXO exists on chain and is correctly-formatted.
+ *
+ * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public Result_NoneLightningErrorZ update_channel_from_unsigned_announcement(UnsignedChannelAnnouncement msg, Access chain_access) {
+ public Result_NoneLightningErrorZ update_channel_from_unsigned_announcement(UnsignedChannelAnnouncement msg, @Nullable Access chain_access) {
long ret = bindings.NetworkGraph_update_channel_from_unsigned_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1, chain_access == null ? 0 : chain_access.ptr);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
this.ptrs_to.add(chain_access);
*/
public Result_NoneLightningErrorZ update_channel(ChannelUpdate msg) {
long ret = bindings.NetworkGraph_update_channel(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ update_channel_unsigned(UnsignedChannelUpdate msg) {
long ret = bindings.NetworkGraph_update_channel_unsigned(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public UnsignedNodeAnnouncement get_contents() {
long ret = bindings.NodeAnnouncement_get_contents(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedNodeAnnouncement ret_hu_conv = new UnsignedNodeAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static NodeAnnouncement of(byte[] signature_arg, UnsignedNodeAnnouncement contents_arg) {
long ret = bindings.NodeAnnouncement_new(signature_arg, contents_arg == null ? 0 : contents_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(contents_arg);
*/
public NodeAnnouncement clone() {
long ret = bindings.NodeAnnouncement_clone(this.ptr);
+ if (ret < 1024) { return null; }
NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_NodeAnnouncementDecodeErrorZ read(byte[] ser) {
long ret = bindings.NodeAnnouncement_read(ser);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public NodeFeatures get_features() {
long ret = bindings.NodeAnnouncementInfo_get_features(this.ptr);
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public NodeAnnouncement get_announcement_message() {
long ret = bindings.NodeAnnouncementInfo_get_announcement_message(this.ptr);
+ if (ret < 1024) { return null; }
NodeAnnouncement ret_hu_conv = new NodeAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Mostly redundant with the data we store in fields explicitly.
* Everything else is useful only for sending out for initial routing sync.
* Not stored if contains excess data to prevent DoS.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_announcement_message(NodeAnnouncement val) {
+ public void set_announcement_message(@Nullable NodeAnnouncement val) {
bindings.NodeAnnouncementInfo_set_announcement_message(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public static NodeAnnouncementInfo of(NodeFeatures features_arg, int last_update_arg, byte[] rgb_arg, byte[] alias_arg, NetAddress[] addresses_arg, NodeAnnouncement announcement_message_arg) {
long ret = bindings.NodeAnnouncementInfo_new(features_arg == null ? 0 : features_arg.ptr & ~1, last_update_arg, rgb_arg, alias_arg, Arrays.stream(addresses_arg).mapToLong(addresses_arg_conv_12 -> addresses_arg_conv_12.ptr).toArray(), announcement_message_arg == null ? 0 : announcement_message_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(features_arg);
*/
public NodeAnnouncementInfo clone() {
long ret = bindings.NodeAnnouncementInfo_clone(this.ptr);
+ if (ret < 1024) { return null; }
NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_NodeAnnouncementInfoDecodeErrorZ read(byte[] ser) {
long ret = bindings.NodeAnnouncementInfo_read(ser);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public NodeFeatures clone() {
long ret = bindings.NodeFeatures_clone(this.ptr);
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static NodeFeatures empty() {
long ret = bindings.NodeFeatures_empty();
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static NodeFeatures known() {
long ret = bindings.NodeFeatures_known();
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_NodeFeaturesDecodeErrorZ read(byte[] ser) {
long ret = bindings.NodeFeatures_read(ser);
+ if (ret < 1024) { return null; }
Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
* Lowest fees enabling routing via any of the enabled, known channels to a node.
* The two fields (flat and proportional fee) are independent,
* meaning they don't have to refer to the same channel.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public RoutingFees get_lowest_inbound_channel_fees() {
long ret = bindings.NodeInfo_get_lowest_inbound_channel_fees(this.ptr);
+ if (ret < 1024) { return null; }
RoutingFees ret_hu_conv = new RoutingFees(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* Lowest fees enabling routing via any of the enabled, known channels to a node.
* The two fields (flat and proportional fee) are independent,
* meaning they don't have to refer to the same channel.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_lowest_inbound_channel_fees(RoutingFees val) {
+ public void set_lowest_inbound_channel_fees(@Nullable RoutingFees val) {
bindings.NodeInfo_set_lowest_inbound_channel_fees(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
* More information about a node from node_announcement.
* Optional because we store a Node entry after learning about it from
* a channel announcement, but before receiving a node announcement.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public NodeAnnouncementInfo get_announcement_info() {
long ret = bindings.NodeInfo_get_announcement_info(this.ptr);
+ if (ret < 1024) { return null; }
NodeAnnouncementInfo ret_hu_conv = new NodeAnnouncementInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
* More information about a node from node_announcement.
* Optional because we store a Node entry after learning about it from
* a channel announcement, but before receiving a node announcement.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_announcement_info(NodeAnnouncementInfo val) {
+ public void set_announcement_info(@Nullable NodeAnnouncementInfo val) {
bindings.NodeInfo_set_announcement_info(this.ptr, val == null ? 0 : val.ptr & ~1);
this.ptrs_to.add(val);
}
*/
public static NodeInfo of(long[] channels_arg, RoutingFees lowest_inbound_channel_fees_arg, NodeAnnouncementInfo announcement_info_arg) {
long ret = bindings.NodeInfo_new(channels_arg, lowest_inbound_channel_fees_arg == null ? 0 : lowest_inbound_channel_fees_arg.ptr & ~1, announcement_info_arg == null ? 0 : announcement_info_arg.ptr & ~1);
+ if (ret < 1024) { return null; }
NodeInfo ret_hu_conv = new NodeInfo(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(lowest_inbound_channel_fees_arg);
*/
public NodeInfo clone() {
long ret = bindings.NodeInfo_clone(this.ptr);
+ if (ret < 1024) { return null; }
NodeInfo ret_hu_conv = new NodeInfo(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_NodeInfoDecodeErrorZ read(byte[] ser) {
long ret = bindings.NodeInfo_read(ser);
+ if (ret < 1024) { return null; }
Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public OpenChannel clone() {
long ret = bindings.OpenChannel_clone(this.ptr);
+ if (ret < 1024) { return null; }
OpenChannel ret_hu_conv = new OpenChannel(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_OpenChannelDecodeErrorZ read(byte[] ser) {
long ret = bindings.OpenChannel_read(ser);
+ if (ret < 1024) { return null; }
Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Option_C2Tuple_usizeTransactionZZ some(TwoTuple<Long, byte[]> o) {
long ret = bindings.COption_C2Tuple_usizeTransactionZZ_some(bindings.C2Tuple_usizeTransactionZ_new(o.a, o.b));
+ if (ret < 1024) { return null; }
Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Option_C2Tuple_usizeTransactionZZ none() {
long ret = bindings.COption_C2Tuple_usizeTransactionZZ_none();
+ if (ret < 1024) { return null; }
Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Option_C2Tuple_usizeTransactionZZ clone() {
long ret = bindings.COption_C2Tuple_usizeTransactionZZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Option_C2Tuple_usizeTransactionZZ ret_hu_conv = Option_C2Tuple_usizeTransactionZZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Option_u16Z some(short o) {
long ret = bindings.COption_u16Z_some(o);
+ if (ret < 1024) { return null; }
Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Option_u16Z none() {
long ret = bindings.COption_u16Z_none();
+ if (ret < 1024) { return null; }
Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Option_u16Z clone() {
long ret = bindings.COption_u16Z_clone(this.ptr);
+ if (ret < 1024) { return null; }
Option_u16Z ret_hu_conv = Option_u16Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Option_u32Z some(int o) {
long ret = bindings.COption_u32Z_some(o);
+ if (ret < 1024) { return null; }
Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Option_u32Z none() {
long ret = bindings.COption_u32Z_none();
+ if (ret < 1024) { return null; }
Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Option_u32Z clone() {
long ret = bindings.COption_u32Z_clone(this.ptr);
+ if (ret < 1024) { return null; }
Option_u32Z ret_hu_conv = Option_u32Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Option_u64Z some(long o) {
long ret = bindings.COption_u64Z_some(o);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Option_u64Z none() {
long ret = bindings.COption_u64Z_none();
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Option_u64Z clone() {
long ret = bindings.COption_u64Z_clone(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static OutPoint of(byte[] txid_arg, short index_arg) {
long ret = bindings.OutPoint_new(txid_arg, index_arg);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public OutPoint clone() {
long ret = bindings.OutPoint_clone(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_OutPointDecodeErrorZ read(byte[] ser) {
long ret = bindings.OutPoint_read(ser);
+ if (ret < 1024) { return null; }
Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public PayeePubKey clone() {
long ret = bindings.PayeePubKey_clone(this.ptr);
+ if (ret < 1024) { return null; }
PayeePubKey ret_hu_conv = new PayeePubKey(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
--- /dev/null
+package org.ldk.structs;
+
+import org.ldk.impl.bindings;
+import org.ldk.enums.*;
+import org.ldk.util.*;
+import java.util.Arrays;
+
+
+/**
+ * Some information provided on receipt of payment depends on whether the payment received is a
+ * spontaneous payment or a \"conventional\" lightning payment that's paying an invoice.
+ */
+@SuppressWarnings("unchecked") // We correctly assign various generic arrays
+public class PaymentPurpose extends CommonBase {
+ private PaymentPurpose(Object _dummy, long ptr) { super(ptr); }
+ @Override @SuppressWarnings("deprecation")
+ protected void finalize() throws Throwable {
+ super.finalize();
+ if (ptr != 0) { bindings.PaymentPurpose_free(ptr); }
+ }
+ static PaymentPurpose constr_from_ptr(long ptr) {
+ bindings.LDKPaymentPurpose raw_val = bindings.LDKPaymentPurpose_ref_from_ptr(ptr);
+ if (raw_val.getClass() == bindings.LDKPaymentPurpose.InvoicePayment.class) {
+ return new InvoicePayment(ptr, (bindings.LDKPaymentPurpose.InvoicePayment)raw_val);
+ }
+ if (raw_val.getClass() == bindings.LDKPaymentPurpose.SpontaneousPayment.class) {
+ return new SpontaneousPayment(ptr, (bindings.LDKPaymentPurpose.SpontaneousPayment)raw_val);
+ }
+ assert false; return null; // Unreachable without extending the (internal) bindings interface
+ }
+
+ public final static class InvoicePayment extends PaymentPurpose {
+ public final byte[] payment_preimage;
+ public final byte[] payment_secret;
+ public final long user_payment_id;
+ private InvoicePayment(long ptr, bindings.LDKPaymentPurpose.InvoicePayment obj) {
+ super(null, ptr);
+ this.payment_preimage = obj.payment_preimage;
+ this.payment_secret = obj.payment_secret;
+ this.user_payment_id = obj.user_payment_id;
+ }
+ }
+ public final static class SpontaneousPayment extends PaymentPurpose {
+ public final byte[] spontaneous_payment;
+ private SpontaneousPayment(long ptr, bindings.LDKPaymentPurpose.SpontaneousPayment obj) {
+ super(null, ptr);
+ this.spontaneous_payment = obj.spontaneous_payment;
+ }
+ }
+ /**
+ * Creates a copy of the PaymentPurpose
+ */
+ public PaymentPurpose clone() {
+ long ret = bindings.PaymentPurpose_clone(this.ptr);
+ if (ret < 1024) { return null; }
+ PaymentPurpose ret_hu_conv = PaymentPurpose.constr_from_ptr(ret);
+ ret_hu_conv.ptrs_to.add(this);
+ return ret_hu_conv;
+ }
+
+}
*/
public PaymentSendFailure clone() {
long ret = bindings.PaymentSendFailure_clone(this.ptr);
+ if (ret < 1024) { return null; }
PaymentSendFailure ret_hu_conv = PaymentSendFailure.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static PeerHandleError of(boolean no_connection_possible_arg) {
long ret = bindings.PeerHandleError_new(no_connection_possible_arg);
+ if (ret < 1024) { return null; }
PeerHandleError ret_hu_conv = new PeerHandleError(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public PeerHandleError clone() {
long ret = bindings.PeerHandleError_clone(this.ptr);
+ if (ret < 1024) { return null; }
PeerHandleError ret_hu_conv = new PeerHandleError(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static PeerManager of(ChannelMessageHandler message_handler_chan_handler_arg, RoutingMessageHandler message_handler_route_handler_arg, byte[] our_node_secret, byte[] ephemeral_random_data, Logger logger) {
long ret = bindings.PeerManager_new(bindings.MessageHandler_new(message_handler_chan_handler_arg == null ? 0 : message_handler_chan_handler_arg.ptr, message_handler_route_handler_arg == null ? 0 : message_handler_route_handler_arg.ptr), our_node_secret, ephemeral_random_data, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
PeerManager ret_hu_conv = new PeerManager(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(message_handler_chan_handler_arg);
*/
public Result_CVec_u8ZPeerHandleErrorZ new_outbound_connection(byte[] their_node_id, SocketDescriptor descriptor) {
long ret = bindings.PeerManager_new_outbound_connection(this.ptr, their_node_id, descriptor == null ? 0 : descriptor.ptr);
+ if (ret < 1024) { return null; }
Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(descriptor);
return ret_hu_conv;
*/
public Result_NonePeerHandleErrorZ new_inbound_connection(SocketDescriptor descriptor) {
long ret = bindings.PeerManager_new_inbound_connection(this.ptr, descriptor == null ? 0 : descriptor.ptr);
+ if (ret < 1024) { return null; }
Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(descriptor);
return ret_hu_conv;
*/
public Result_NonePeerHandleErrorZ write_buffer_space_avail(SocketDescriptor descriptor) {
long ret = bindings.PeerManager_write_buffer_space_avail(this.ptr, descriptor == null ? 0 : descriptor.ptr);
+ if (ret < 1024) { return null; }
Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(descriptor);
return ret_hu_conv;
*/
public Result_boolPeerHandleErrorZ read_event(SocketDescriptor peer_descriptor, byte[] data) {
long ret = bindings.PeerManager_read_event(this.ptr, peer_descriptor == null ? 0 : peer_descriptor.ptr, data);
+ if (ret < 1024) { return null; }
Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(peer_descriptor);
return ret_hu_conv;
*/
public Result_NoneChannelMonitorUpdateErrZ persist_new_channel(OutPoint id, ChannelMonitor data) {
long ret = bindings.Persist_persist_new_channel(this.ptr, id == null ? 0 : id.ptr & ~1, data == null ? 0 : data.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
this.ptrs_to.add(id);
this.ptrs_to.add(data);
*/
public Result_NoneChannelMonitorUpdateErrZ update_persisted_channel(OutPoint id, ChannelMonitorUpdate update, ChannelMonitor data) {
long ret = bindings.Persist_update_persisted_channel(this.ptr, id == null ? 0 : id.ptr & ~1, update == null ? 0 : update.ptr & ~1, data == null ? 0 : data.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
this.ptrs_to.add(id);
this.ptrs_to.add(update);
*/
public static Ping of(short ponglen_arg, short byteslen_arg) {
long ret = bindings.Ping_new(ponglen_arg, byteslen_arg);
+ if (ret < 1024) { return null; }
Ping ret_hu_conv = new Ping(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Ping clone() {
long ret = bindings.Ping_clone(this.ptr);
+ if (ret < 1024) { return null; }
Ping ret_hu_conv = new Ping(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_PingDecodeErrorZ read(byte[] ser) {
long ret = bindings.Ping_read(ser);
+ if (ret < 1024) { return null; }
Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Pong of(short byteslen_arg) {
long ret = bindings.Pong_new(byteslen_arg);
+ if (ret < 1024) { return null; }
Pong ret_hu_conv = new Pong(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Pong clone() {
long ret = bindings.Pong_clone(this.ptr);
+ if (ret < 1024) { return null; }
Pong ret_hu_conv = new Pong(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_PongDecodeErrorZ read(byte[] ser) {
long ret = bindings.Pong_read(ser);
+ if (ret < 1024) { return null; }
Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public PositiveTimestamp clone() {
long ret = bindings.PositiveTimestamp_clone(this.ptr);
+ if (ret < 1024) { return null; }
PositiveTimestamp ret_hu_conv = new PositiveTimestamp(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_PositiveTimestampCreationErrorZ from_unix_timestamp(long unix_seconds) {
long ret = bindings.PositiveTimestamp_from_unix_timestamp(unix_seconds);
+ if (ret < 1024) { return null; }
Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PositiveTimestampCreationErrorZ from_system_time(long time) {
long ret = bindings.PositiveTimestamp_from_system_time(time);
+ if (ret < 1024) { return null; }
Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public PrivateRoute clone() {
long ret = bindings.PrivateRoute_clone(this.ptr);
+ if (ret < 1024) { return null; }
PrivateRoute ret_hu_conv = new PrivateRoute(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_PrivateRouteCreationErrorZ of(RouteHint hops) {
long ret = bindings.PrivateRoute_new(hops == null ? 0 : hops.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(hops);
return ret_hu_conv;
*/
public RouteHint into_inner() {
long ret = bindings.PrivateRoute_into_inner(this.ptr);
+ if (ret < 1024) { return null; }
RouteHint ret_hu_conv = new RouteHint(null, ret);
ret_hu_conv.ptrs_to.add(this);
this.ptrs_to.add(this);
*/
public static QueryChannelRange of(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg) {
long ret = bindings.QueryChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg);
+ if (ret < 1024) { return null; }
QueryChannelRange ret_hu_conv = new QueryChannelRange(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public QueryChannelRange clone() {
long ret = bindings.QueryChannelRange_clone(this.ptr);
+ if (ret < 1024) { return null; }
QueryChannelRange ret_hu_conv = new QueryChannelRange(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_QueryChannelRangeDecodeErrorZ read(byte[] ser) {
long ret = bindings.QueryChannelRange_read(ser);
+ if (ret < 1024) { return null; }
Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static QueryShortChannelIds of(byte[] chain_hash_arg, long[] short_channel_ids_arg) {
long ret = bindings.QueryShortChannelIds_new(chain_hash_arg, short_channel_ids_arg);
+ if (ret < 1024) { return null; }
QueryShortChannelIds ret_hu_conv = new QueryShortChannelIds(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public QueryShortChannelIds clone() {
long ret = bindings.QueryShortChannelIds_clone(this.ptr);
+ if (ret < 1024) { return null; }
QueryShortChannelIds ret_hu_conv = new QueryShortChannelIds(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_QueryShortChannelIdsDecodeErrorZ read(byte[] ser) {
long ret = bindings.QueryShortChannelIds_read(ser);
+ if (ret < 1024) { return null; }
Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public PositiveTimestamp get_timestamp() {
long ret = bindings.RawDataPart_get_timestamp(this.ptr);
+ if (ret < 1024) { return null; }
PositiveTimestamp ret_hu_conv = new PositiveTimestamp(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RawDataPart clone() {
long ret = bindings.RawDataPart_clone(this.ptr);
+ if (ret < 1024) { return null; }
RawDataPart ret_hu_conv = new RawDataPart(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RawDataPart get_data() {
long ret = bindings.RawInvoice_get_data(this.ptr);
+ if (ret < 1024) { return null; }
RawDataPart ret_hu_conv = new RawDataPart(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RawInvoice clone() {
long ret = bindings.RawInvoice_clone(this.ptr);
+ if (ret < 1024) { return null; }
RawInvoice ret_hu_conv = new RawInvoice(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
return ret;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public Sha256 payment_hash() {
long ret = bindings.RawInvoice_payment_hash(this.ptr);
+ if (ret < 1024) { return null; }
Sha256 ret_hu_conv = new Sha256(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public Description description() {
long ret = bindings.RawInvoice_description(this.ptr);
+ if (ret < 1024) { return null; }
Description ret_hu_conv = new Description(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public PayeePubKey payee_pub_key() {
long ret = bindings.RawInvoice_payee_pub_key(this.ptr);
+ if (ret < 1024) { return null; }
PayeePubKey ret_hu_conv = new PayeePubKey(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public Sha256 description_hash() {
long ret = bindings.RawInvoice_description_hash(this.ptr);
+ if (ret < 1024) { return null; }
Sha256 ret_hu_conv = new Sha256(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public ExpiryTime expiry_time() {
long ret = bindings.RawInvoice_expiry_time(this.ptr);
+ if (ret < 1024) { return null; }
ExpiryTime ret_hu_conv = new ExpiryTime(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public MinFinalCltvExpiry min_final_cltv_expiry() {
long ret = bindings.RawInvoice_min_final_cltv_expiry(this.ptr);
+ if (ret < 1024) { return null; }
MinFinalCltvExpiry ret_hu_conv = new MinFinalCltvExpiry(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public byte[] payment_secret() {
byte[] ret = bindings.RawInvoice_payment_secret(this.ptr);
return ret;
}
+ /**
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ @Nullable
public InvoiceFeatures features() {
long ret = bindings.RawInvoice_features(this.ptr);
+ if (ret < 1024) { return null; }
InvoiceFeatures ret_hu_conv = new InvoiceFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ *
+ */
public PrivateRoute[] private_routes() {
long[] ret = bindings.RawInvoice_private_routes(this.ptr);
PrivateRoute[] ret_conv_14_arr = new PrivateRoute[ret.length];
return ret_conv_14_arr;
}
+ /**
+ *
+ */
public Option_u64Z amount_pico_btc() {
long ret = bindings.RawInvoice_amount_pico_btc(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
}
+ /**
+ *
+ */
public Currency currency() {
Currency ret = bindings.RawInvoice_currency(this.ptr);
return ret;
*/
public static ReplyChannelRange of(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean sync_complete_arg, long[] short_channel_ids_arg) {
long ret = bindings.ReplyChannelRange_new(chain_hash_arg, first_blocknum_arg, number_of_blocks_arg, sync_complete_arg, short_channel_ids_arg);
+ if (ret < 1024) { return null; }
ReplyChannelRange ret_hu_conv = new ReplyChannelRange(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ReplyChannelRange clone() {
long ret = bindings.ReplyChannelRange_clone(this.ptr);
+ if (ret < 1024) { return null; }
ReplyChannelRange ret_hu_conv = new ReplyChannelRange(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ReplyChannelRangeDecodeErrorZ read(byte[] ser) {
long ret = bindings.ReplyChannelRange_read(ser);
+ if (ret < 1024) { return null; }
Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static ReplyShortChannelIdsEnd of(byte[] chain_hash_arg, boolean full_information_arg) {
long ret = bindings.ReplyShortChannelIdsEnd_new(chain_hash_arg, full_information_arg);
+ if (ret < 1024) { return null; }
ReplyShortChannelIdsEnd ret_hu_conv = new ReplyShortChannelIdsEnd(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public ReplyShortChannelIdsEnd clone() {
long ret = bindings.ReplyShortChannelIdsEnd_clone(this.ptr);
+ if (ret < 1024) { return null; }
ReplyShortChannelIdsEnd ret_hu_conv = new ReplyShortChannelIdsEnd(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ReplyShortChannelIdsEndDecodeErrorZ read(byte[] ser) {
long ret = bindings.ReplyShortChannelIdsEnd_read(ser);
+ if (ret < 1024) { return null; }
Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_AcceptChannelDecodeErrorZ ok(AcceptChannel o) {
long ret = bindings.CResult_AcceptChannelDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_AcceptChannelDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_AcceptChannelDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_AcceptChannelDecodeErrorZ clone() {
long ret = bindings.CResult_AcceptChannelDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_AcceptChannelDecodeErrorZ ret_hu_conv = Result_AcceptChannelDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_AnnouncementSignaturesDecodeErrorZ ok(AnnouncementSignatures o) {
long ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_AnnouncementSignaturesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_AnnouncementSignaturesDecodeErrorZ clone() {
long ret = bindings.CResult_AnnouncementSignaturesDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_AnnouncementSignaturesDecodeErrorZ ret_hu_conv = Result_AnnouncementSignaturesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_BuiltCommitmentTransactionDecodeErrorZ ok(BuiltCommitmentTransaction o) {
long ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_BuiltCommitmentTransactionDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_BuiltCommitmentTransactionDecodeErrorZ clone() {
long ret = bindings.CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_BuiltCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_BuiltCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ok(TwoTuple<byte[], ChannelManager> o) {
long ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(bindings.C2Tuple_BlockHashChannelManagerZ_new(o.a, o.b == null ? 0 : o.b.ptr & ~1));
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o.b);
// Due to rust's strict-ownership memory model, in some cases we need to "move"
*/
public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ok(TwoTuple<byte[], ChannelMonitor> o) {
long ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(bindings.C2Tuple_BlockHashChannelMonitorZ_new(o.a, o.b == null ? 0 : o.b.ptr & ~1));
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o.b);
return ret_hu_conv;
*/
public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ok(TwoTuple<byte[], byte[][]> o) {
long ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(bindings.C2Tuple_SignatureCVec_SignatureZZ_new(o.a, o.b));
+ if (ret < 1024) { return null; }
Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_C2Tuple_SignatureCVec_SignatureZZNoneZ err() {
long ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+ if (ret < 1024) { return null; }
Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_C2Tuple_SignatureCVec_SignatureZZNoneZ clone() {
long ret = bindings.CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_C2Tuple_SignatureCVec_SignatureZZNoneZ ret_hu_conv = Result_C2Tuple_SignatureCVec_SignatureZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CResult_NetAddressu8ZDecodeErrorZ ok(Result_NetAddressu8Z o) {
long ret = bindings.CResult_CResult_NetAddressu8ZDecodeErrorZ_ok(o != null ? o.ptr : 0);
+ if (ret < 1024) { return null; }
Result_CResult_NetAddressu8ZDecodeErrorZ ret_hu_conv = Result_CResult_NetAddressu8ZDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CResult_NetAddressu8ZDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_CResult_NetAddressu8ZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CResult_NetAddressu8ZDecodeErrorZ ret_hu_conv = Result_CResult_NetAddressu8ZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_CResult_NetAddressu8ZDecodeErrorZ clone() {
long ret = bindings.CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CResult_NetAddressu8ZDecodeErrorZ ret_hu_conv = Result_CResult_NetAddressu8ZDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ok(TwoTuple<byte[], ChannelMonitor>[] o) {
long ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(Arrays.stream(o).mapToLong(o_conv_34 -> bindings.C2Tuple_BlockHashChannelMonitorZ_new(o_conv_34.a, o_conv_34.b == null ? 0 : o_conv_34.b.ptr & ~1)).toArray());
+ if (ret < 1024) { return null; }
Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
/* TODO 2 TwoTuple<byte[], ChannelMonitor> */;
return ret_hu_conv;
*/
public static Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ err(IOError e) {
long ret = bindings.CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ ret_hu_conv = Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_CVec_u8ZZNoneZ ok(byte[][] o) {
long ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_ok(o);
+ if (ret < 1024) { return null; }
Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_CVec_u8ZZNoneZ err() {
long ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_err();
+ if (ret < 1024) { return null; }
Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_CVec_CVec_u8ZZNoneZ clone() {
long ret = bindings.CResult_CVec_CVec_u8ZZNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CVec_CVec_u8ZZNoneZ ret_hu_conv = Result_CVec_CVec_u8ZZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_SignatureZNoneZ ok(byte[][] o) {
long ret = bindings.CResult_CVec_SignatureZNoneZ_ok(o);
+ if (ret < 1024) { return null; }
Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_SignatureZNoneZ err() {
long ret = bindings.CResult_CVec_SignatureZNoneZ_err();
+ if (ret < 1024) { return null; }
Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_CVec_SignatureZNoneZ clone() {
long ret = bindings.CResult_CVec_SignatureZNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_u8ZPeerHandleErrorZ ok(byte[] o) {
long ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CVec_u8ZPeerHandleErrorZ err(PeerHandleError e) {
long ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_CVec_u8ZPeerHandleErrorZ clone() {
long ret = bindings.CResult_CVec_u8ZPeerHandleErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CVec_u8ZPeerHandleErrorZ ret_hu_conv = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelAnnouncementDecodeErrorZ ok(ChannelAnnouncement o) {
long ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelAnnouncementDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelAnnouncementDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelAnnouncementDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_ChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelConfigDecodeErrorZ ok(ChannelConfig o) {
long ret = bindings.CResult_ChannelConfigDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelConfigDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelConfigDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelConfigDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelConfigDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelConfigDecodeErrorZ ret_hu_conv = Result_ChannelConfigDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelFeaturesDecodeErrorZ ok(ChannelFeatures o) {
long ret = bindings.CResult_ChannelFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelFeaturesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelFeaturesDecodeErrorZ ret_hu_conv = Result_ChannelFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_ChannelInfoDecodeErrorZ ok(ChannelInfo o) {
long ret = bindings.CResult_ChannelInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelInfoDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelInfoDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelInfoDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelInfoDecodeErrorZ ret_hu_conv = Result_ChannelInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelMonitorUpdateDecodeErrorZ ok(ChannelMonitorUpdate o) {
long ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelMonitorUpdateDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelMonitorUpdateDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelMonitorUpdateDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelMonitorUpdateDecodeErrorZ ret_hu_conv = Result_ChannelMonitorUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelPublicKeysDecodeErrorZ ok(ChannelPublicKeys o) {
long ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelPublicKeysDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelPublicKeysDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelPublicKeysDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelPublicKeysDecodeErrorZ ret_hu_conv = Result_ChannelPublicKeysDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelReestablishDecodeErrorZ ok(ChannelReestablish o) {
long ret = bindings.CResult_ChannelReestablishDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelReestablishDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelReestablishDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelReestablishDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelReestablishDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelReestablishDecodeErrorZ ret_hu_conv = Result_ChannelReestablishDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelTransactionParametersDecodeErrorZ ok(ChannelTransactionParameters o) {
long ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelTransactionParametersDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelTransactionParametersDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelTransactionParametersDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_ChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ChannelUpdateDecodeErrorZ ok(ChannelUpdate o) {
long ret = bindings.CResult_ChannelUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ChannelUpdateDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ChannelUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ChannelUpdateDecodeErrorZ clone() {
long ret = bindings.CResult_ChannelUpdateDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ChannelUpdateDecodeErrorZ ret_hu_conv = Result_ChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ClosingSignedDecodeErrorZ ok(ClosingSigned o) {
long ret = bindings.CResult_ClosingSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ClosingSignedDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ClosingSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ClosingSignedDecodeErrorZ clone() {
long ret = bindings.CResult_ClosingSignedDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ClosingSignedDecodeErrorZ ret_hu_conv = Result_ClosingSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CommitmentSignedDecodeErrorZ ok(CommitmentSigned o) {
long ret = bindings.CResult_CommitmentSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_CommitmentSignedDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_CommitmentSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_CommitmentSignedDecodeErrorZ clone() {
long ret = bindings.CResult_CommitmentSignedDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CommitmentSignedDecodeErrorZ ret_hu_conv = Result_CommitmentSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CommitmentTransactionDecodeErrorZ ok(CommitmentTransaction o) {
long ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_CommitmentTransactionDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_CommitmentTransactionDecodeErrorZ clone() {
long ret = bindings.CResult_CommitmentTransactionDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CommitmentTransactionDecodeErrorZ ret_hu_conv = Result_CommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ ok(CounterpartyChannelTransactionParameters o) {
long ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_CounterpartyChannelTransactionParametersDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_CounterpartyChannelTransactionParametersDecodeErrorZ clone() {
long ret = bindings.CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_CounterpartyChannelTransactionParametersDecodeErrorZ ret_hu_conv = Result_CounterpartyChannelTransactionParametersDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_DelayedPaymentOutputDescriptorDecodeErrorZ ok(DelayedPaymentOutputDescriptor o) {
long ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_DelayedPaymentOutputDescriptorDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_DelayedPaymentOutputDescriptorDecodeErrorZ clone() {
long ret = bindings.CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_DelayedPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_DelayedPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_DescriptionCreationErrorZ ok(Description o) {
long ret = bindings.CResult_DescriptionCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_DescriptionCreationErrorZ err(CreationError e) {
long ret = bindings.CResult_DescriptionCreationErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_DescriptionCreationErrorZ clone() {
long ret = bindings.CResult_DescriptionCreationErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_DescriptionCreationErrorZ ret_hu_conv = Result_DescriptionCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_DirectionalChannelInfoDecodeErrorZ ok(DirectionalChannelInfo o) {
long ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_DirectionalChannelInfoDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_DirectionalChannelInfoDecodeErrorZ clone() {
long ret = bindings.CResult_DirectionalChannelInfoDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_DirectionalChannelInfoDecodeErrorZ ret_hu_conv = Result_DirectionalChannelInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ErrorMessageDecodeErrorZ ok(ErrorMessage o) {
long ret = bindings.CResult_ErrorMessageDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ErrorMessageDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ErrorMessageDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ErrorMessageDecodeErrorZ clone() {
long ret = bindings.CResult_ErrorMessageDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ErrorMessageDecodeErrorZ ret_hu_conv = Result_ErrorMessageDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ExpiryTimeCreationErrorZ ok(ExpiryTime o) {
long ret = bindings.CResult_ExpiryTimeCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ExpiryTimeCreationErrorZ err(CreationError e) {
long ret = bindings.CResult_ExpiryTimeCreationErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_ExpiryTimeCreationErrorZ clone() {
long ret = bindings.CResult_ExpiryTimeCreationErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ExpiryTimeCreationErrorZ ret_hu_conv = Result_ExpiryTimeCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_FundingCreatedDecodeErrorZ ok(FundingCreated o) {
long ret = bindings.CResult_FundingCreatedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_FundingCreatedDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_FundingCreatedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_FundingCreatedDecodeErrorZ clone() {
long ret = bindings.CResult_FundingCreatedDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_FundingCreatedDecodeErrorZ ret_hu_conv = Result_FundingCreatedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_FundingLockedDecodeErrorZ ok(FundingLocked o) {
long ret = bindings.CResult_FundingLockedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_FundingLockedDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_FundingLockedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_FundingLockedDecodeErrorZ clone() {
long ret = bindings.CResult_FundingLockedDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_FundingLockedDecodeErrorZ ret_hu_conv = Result_FundingLockedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_FundingSignedDecodeErrorZ ok(FundingSigned o) {
long ret = bindings.CResult_FundingSignedDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_FundingSignedDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_FundingSignedDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_FundingSignedDecodeErrorZ clone() {
long ret = bindings.CResult_FundingSignedDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_FundingSignedDecodeErrorZ ret_hu_conv = Result_FundingSignedDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_GossipTimestampFilterDecodeErrorZ ok(GossipTimestampFilter o) {
long ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_GossipTimestampFilterDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_GossipTimestampFilterDecodeErrorZ clone() {
long ret = bindings.CResult_GossipTimestampFilterDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_GossipTimestampFilterDecodeErrorZ ret_hu_conv = Result_GossipTimestampFilterDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_HTLCOutputInCommitmentDecodeErrorZ ok(HTLCOutputInCommitment o) {
long ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_HTLCOutputInCommitmentDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_HTLCOutputInCommitmentDecodeErrorZ clone() {
long ret = bindings.CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_HTLCOutputInCommitmentDecodeErrorZ ret_hu_conv = Result_HTLCOutputInCommitmentDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_HTLCUpdateDecodeErrorZ ok(HTLCUpdate o) {
long ret = bindings.CResult_HTLCUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_HTLCUpdateDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_HTLCUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_HTLCUpdateDecodeErrorZ clone() {
long ret = bindings.CResult_HTLCUpdateDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_HTLCUpdateDecodeErrorZ ret_hu_conv = Result_HTLCUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_HolderCommitmentTransactionDecodeErrorZ ok(HolderCommitmentTransaction o) {
long ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_HolderCommitmentTransactionDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_HolderCommitmentTransactionDecodeErrorZ clone() {
long ret = bindings.CResult_HolderCommitmentTransactionDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_HolderCommitmentTransactionDecodeErrorZ ret_hu_conv = Result_HolderCommitmentTransactionDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InMemorySignerDecodeErrorZ ok(InMemorySigner o) {
long ret = bindings.CResult_InMemorySignerDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InMemorySignerDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_InMemorySignerDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_InMemorySignerDecodeErrorZ clone() {
long ret = bindings.CResult_InMemorySignerDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_InMemorySignerDecodeErrorZ ret_hu_conv = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InitDecodeErrorZ ok(Init o) {
long ret = bindings.CResult_InitDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InitDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_InitDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_InitDecodeErrorZ clone() {
long ret = bindings.CResult_InitDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_InitDecodeErrorZ ret_hu_conv = Result_InitDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InitFeaturesDecodeErrorZ ok(InitFeatures o) {
long ret = bindings.CResult_InitFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InitFeaturesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_InitFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InitFeaturesDecodeErrorZ ret_hu_conv = Result_InitFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_InvoiceFeaturesDecodeErrorZ ok(InvoiceFeatures o) {
long ret = bindings.CResult_InvoiceFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InvoiceFeaturesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_InvoiceFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceFeaturesDecodeErrorZ ret_hu_conv = Result_InvoiceFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_InvoiceNoneZ ok(Invoice o) {
long ret = bindings.CResult_InvoiceNoneZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InvoiceNoneZ err() {
long ret = bindings.CResult_InvoiceNoneZ_err();
+ if (ret < 1024) { return null; }
Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_InvoiceNoneZ clone() {
long ret = bindings.CResult_InvoiceNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_InvoiceNoneZ ret_hu_conv = Result_InvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InvoiceSemanticErrorZ ok(Invoice o) {
long ret = bindings.CResult_InvoiceSemanticErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InvoiceSemanticErrorZ err(SemanticError e) {
long ret = bindings.CResult_InvoiceSemanticErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_InvoiceSemanticErrorZ clone() {
long ret = bindings.CResult_InvoiceSemanticErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_InvoiceSemanticErrorZ ret_hu_conv = Result_InvoiceSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_InvoiceSignOrCreationErrorZ ok(Invoice o) {
long ret = bindings.CResult_InvoiceSignOrCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_InvoiceSignOrCreationErrorZ err(SignOrCreationError e) {
long ret = bindings.CResult_InvoiceSignOrCreationErrorZ_err(e.ptr);
+ if (ret < 1024) { return null; }
Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_InvoiceSignOrCreationErrorZ clone() {
long ret = bindings.CResult_InvoiceSignOrCreationErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NetAddressDecodeErrorZ ok(NetAddress o) {
long ret = bindings.CResult_NetAddressDecodeErrorZ_ok(o.ptr);
+ if (ret < 1024) { return null; }
Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NetAddressDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NetAddressDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NetAddressDecodeErrorZ clone() {
long ret = bindings.CResult_NetAddressDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NetAddressDecodeErrorZ ret_hu_conv = Result_NetAddressDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NetAddressu8Z ok(NetAddress o) {
long ret = bindings.CResult_NetAddressu8Z_ok(o.ptr);
+ if (ret < 1024) { return null; }
Result_NetAddressu8Z ret_hu_conv = Result_NetAddressu8Z.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NetAddressu8Z err(byte e) {
long ret = bindings.CResult_NetAddressu8Z_err(e);
+ if (ret < 1024) { return null; }
Result_NetAddressu8Z ret_hu_conv = Result_NetAddressu8Z.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NetAddressu8Z clone() {
long ret = bindings.CResult_NetAddressu8Z_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NetAddressu8Z ret_hu_conv = Result_NetAddressu8Z.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NetworkGraphDecodeErrorZ ok(NetworkGraph o) {
long ret = bindings.CResult_NetworkGraphDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_NetworkGraphDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NetworkGraphDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NetworkGraphDecodeErrorZ clone() {
long ret = bindings.CResult_NetworkGraphDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NetworkGraphDecodeErrorZ ret_hu_conv = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NodeAnnouncementDecodeErrorZ ok(NodeAnnouncement o) {
long ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_NodeAnnouncementDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NodeAnnouncementDecodeErrorZ clone() {
long ret = bindings.CResult_NodeAnnouncementDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NodeAnnouncementInfoDecodeErrorZ ok(NodeAnnouncementInfo o) {
long ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_NodeAnnouncementInfoDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NodeAnnouncementInfoDecodeErrorZ clone() {
long ret = bindings.CResult_NodeAnnouncementInfoDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NodeAnnouncementInfoDecodeErrorZ ret_hu_conv = Result_NodeAnnouncementInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NodeFeaturesDecodeErrorZ ok(NodeFeatures o) {
long ret = bindings.CResult_NodeFeaturesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_NodeFeaturesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NodeFeaturesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeFeaturesDecodeErrorZ ret_hu_conv = Result_NodeFeaturesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public static Result_NodeInfoDecodeErrorZ ok(NodeInfo o) {
long ret = bindings.CResult_NodeInfoDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_NodeInfoDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_NodeInfoDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NodeInfoDecodeErrorZ clone() {
long ret = bindings.CResult_NodeInfoDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NodeInfoDecodeErrorZ ret_hu_conv = Result_NodeInfoDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneAPIErrorZ ok() {
long ret = bindings.CResult_NoneAPIErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneAPIErrorZ err(APIError e) {
long ret = bindings.CResult_NoneAPIErrorZ_err(e.ptr);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NoneAPIErrorZ clone() {
long ret = bindings.CResult_NoneAPIErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneAPIErrorZ ret_hu_conv = Result_NoneAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneChannelMonitorUpdateErrZ ok() {
long ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneChannelMonitorUpdateErrZ err(ChannelMonitorUpdateErr e) {
long ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_err(e);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NoneChannelMonitorUpdateErrZ clone() {
long ret = bindings.CResult_NoneChannelMonitorUpdateErrZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneErrorZ ok() {
long ret = bindings.CResult_NoneErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneErrorZ err(IOError e) {
long ret = bindings.CResult_NoneErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NoneErrorZ clone() {
long ret = bindings.CResult_NoneErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneLightningErrorZ ok() {
long ret = bindings.CResult_NoneLightningErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneLightningErrorZ err(LightningError e) {
long ret = bindings.CResult_NoneLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ clone() {
long ret = bindings.CResult_NoneLightningErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneMonitorUpdateErrorZ ok() {
long ret = bindings.CResult_NoneMonitorUpdateErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneMonitorUpdateErrorZ ret_hu_conv = Result_NoneMonitorUpdateErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneMonitorUpdateErrorZ err(MonitorUpdateError e) {
long ret = bindings.CResult_NoneMonitorUpdateErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneMonitorUpdateErrorZ ret_hu_conv = Result_NoneMonitorUpdateErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NoneMonitorUpdateErrorZ clone() {
long ret = bindings.CResult_NoneMonitorUpdateErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneMonitorUpdateErrorZ ret_hu_conv = Result_NoneMonitorUpdateErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NonePaymentSendFailureZ ok() {
long ret = bindings.CResult_NonePaymentSendFailureZ_ok();
+ if (ret < 1024) { return null; }
Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NonePaymentSendFailureZ err(PaymentSendFailure e) {
long ret = bindings.CResult_NonePaymentSendFailureZ_err(e.ptr);
+ if (ret < 1024) { return null; }
Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NonePaymentSendFailureZ clone() {
long ret = bindings.CResult_NonePaymentSendFailureZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NonePaymentSendFailureZ ret_hu_conv = Result_NonePaymentSendFailureZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NonePeerHandleErrorZ ok() {
long ret = bindings.CResult_NonePeerHandleErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NonePeerHandleErrorZ err(PeerHandleError e) {
long ret = bindings.CResult_NonePeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_NonePeerHandleErrorZ clone() {
long ret = bindings.CResult_NonePeerHandleErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NonePeerHandleErrorZ ret_hu_conv = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneSemanticErrorZ ok() {
long ret = bindings.CResult_NoneSemanticErrorZ_ok();
+ if (ret < 1024) { return null; }
Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_NoneSemanticErrorZ err(SemanticError e) {
long ret = bindings.CResult_NoneSemanticErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_NoneSemanticErrorZ clone() {
long ret = bindings.CResult_NoneSemanticErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_NoneSemanticErrorZ ret_hu_conv = Result_NoneSemanticErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_OpenChannelDecodeErrorZ ok(OpenChannel o) {
long ret = bindings.CResult_OpenChannelDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_OpenChannelDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_OpenChannelDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_OpenChannelDecodeErrorZ clone() {
long ret = bindings.CResult_OpenChannelDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_OpenChannelDecodeErrorZ ret_hu_conv = Result_OpenChannelDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_OutPointDecodeErrorZ ok(OutPoint o) {
long ret = bindings.CResult_OutPointDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_OutPointDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_OutPointDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_OutPointDecodeErrorZ clone() {
long ret = bindings.CResult_OutPointDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_OutPointDecodeErrorZ ret_hu_conv = Result_OutPointDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PayeePubKeyErrorZ ok(PayeePubKey o) {
long ret = bindings.CResult_PayeePubKeyErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_PayeePubKeyErrorZ err(Secp256k1Error e) {
long ret = bindings.CResult_PayeePubKeyErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_PayeePubKeyErrorZ clone() {
long ret = bindings.CResult_PayeePubKeyErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
--- /dev/null
+package org.ldk.structs;
+
+import org.ldk.impl.bindings;
+import org.ldk.enums.*;
+import org.ldk.util.*;
+import java.util.Arrays;
+
+public class Result_PaymentHashPaymentSendFailureZ extends CommonBase {
+ private Result_PaymentHashPaymentSendFailureZ(Object _dummy, long ptr) { super(ptr); }
+ protected void finalize() throws Throwable {
+ if (ptr != 0) { bindings.CResult_PaymentHashPaymentSendFailureZ_free(ptr); } super.finalize();
+ }
+
+ static Result_PaymentHashPaymentSendFailureZ constr_from_ptr(long ptr) {
+ if (bindings.LDKCResult_PaymentHashPaymentSendFailureZ_result_ok(ptr)) {
+ return new Result_PaymentHashPaymentSendFailureZ_OK(null, ptr);
+ } else {
+ return new Result_PaymentHashPaymentSendFailureZ_Err(null, ptr);
+ }
+ }
+ public static final class Result_PaymentHashPaymentSendFailureZ_OK extends Result_PaymentHashPaymentSendFailureZ {
+ public final byte[] res;
+ private Result_PaymentHashPaymentSendFailureZ_OK(Object _dummy, long ptr) {
+ super(_dummy, ptr);
+ this.res = bindings.LDKCResult_PaymentHashPaymentSendFailureZ_get_ok(ptr);
+ }
+ }
+
+ public static final class Result_PaymentHashPaymentSendFailureZ_Err extends Result_PaymentHashPaymentSendFailureZ {
+ public final PaymentSendFailure err;
+ private Result_PaymentHashPaymentSendFailureZ_Err(Object _dummy, long ptr) {
+ super(_dummy, ptr);
+ long err = bindings.LDKCResult_PaymentHashPaymentSendFailureZ_get_err(ptr);
+ PaymentSendFailure err_hu_conv = PaymentSendFailure.constr_from_ptr(err);
+ err_hu_conv.ptrs_to.add(this);
+ this.err = err_hu_conv;
+ }
+ }
+
+ /**
+ * Creates a new CResult_PaymentHashPaymentSendFailureZ in the success state.
+ */
+ public static Result_PaymentHashPaymentSendFailureZ ok(byte[] o) {
+ long ret = bindings.CResult_PaymentHashPaymentSendFailureZ_ok(o);
+ if (ret < 1024) { return null; }
+ Result_PaymentHashPaymentSendFailureZ ret_hu_conv = Result_PaymentHashPaymentSendFailureZ.constr_from_ptr(ret);
+ return ret_hu_conv;
+ }
+
+ /**
+ * Creates a new CResult_PaymentHashPaymentSendFailureZ in the error state.
+ */
+ public static Result_PaymentHashPaymentSendFailureZ err(PaymentSendFailure e) {
+ long ret = bindings.CResult_PaymentHashPaymentSendFailureZ_err(e.ptr);
+ if (ret < 1024) { return null; }
+ Result_PaymentHashPaymentSendFailureZ ret_hu_conv = Result_PaymentHashPaymentSendFailureZ.constr_from_ptr(ret);
+ return ret_hu_conv;
+ }
+
+ /**
+ * Creates a new CResult_PaymentHashPaymentSendFailureZ which has the same data as `orig`
+ * but with all dynamically-allocated buffers duplicated in new buffers.
+ */
+ public Result_PaymentHashPaymentSendFailureZ clone() {
+ long ret = bindings.CResult_PaymentHashPaymentSendFailureZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
+ Result_PaymentHashPaymentSendFailureZ ret_hu_conv = Result_PaymentHashPaymentSendFailureZ.constr_from_ptr(ret);
+ return ret_hu_conv;
+ }
+
+}
*/
public static Result_PaymentSecretAPIErrorZ ok(byte[] o) {
long ret = bindings.CResult_PaymentSecretAPIErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PaymentSecretAPIErrorZ err(APIError e) {
long ret = bindings.CResult_PaymentSecretAPIErrorZ_err(e.ptr);
+ if (ret < 1024) { return null; }
Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_PaymentSecretAPIErrorZ clone() {
long ret = bindings.CResult_PaymentSecretAPIErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PaymentSecretAPIErrorZ ret_hu_conv = Result_PaymentSecretAPIErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PingDecodeErrorZ ok(Ping o) {
long ret = bindings.CResult_PingDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_PingDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_PingDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_PingDecodeErrorZ clone() {
long ret = bindings.CResult_PingDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PingDecodeErrorZ ret_hu_conv = Result_PingDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PongDecodeErrorZ ok(Pong o) {
long ret = bindings.CResult_PongDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_PongDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_PongDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_PongDecodeErrorZ clone() {
long ret = bindings.CResult_PongDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PongDecodeErrorZ ret_hu_conv = Result_PongDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PositiveTimestampCreationErrorZ ok(PositiveTimestamp o) {
long ret = bindings.CResult_PositiveTimestampCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_PositiveTimestampCreationErrorZ err(CreationError e) {
long ret = bindings.CResult_PositiveTimestampCreationErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_PositiveTimestampCreationErrorZ clone() {
long ret = bindings.CResult_PositiveTimestampCreationErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PositiveTimestampCreationErrorZ ret_hu_conv = Result_PositiveTimestampCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PrivateRouteCreationErrorZ ok(PrivateRoute o) {
long ret = bindings.CResult_PrivateRouteCreationErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_PrivateRouteCreationErrorZ err(CreationError e) {
long ret = bindings.CResult_PrivateRouteCreationErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_PrivateRouteCreationErrorZ clone() {
long ret = bindings.CResult_PrivateRouteCreationErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PrivateRouteCreationErrorZ ret_hu_conv = Result_PrivateRouteCreationErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PublicKeyErrorZ ok(byte[] o) {
long ret = bindings.CResult_PublicKeyErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PublicKeyErrorZ err(Secp256k1Error e) {
long ret = bindings.CResult_PublicKeyErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_PublicKeyErrorZ clone() {
long ret = bindings.CResult_PublicKeyErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_QueryChannelRangeDecodeErrorZ ok(QueryChannelRange o) {
long ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_QueryChannelRangeDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_QueryChannelRangeDecodeErrorZ clone() {
long ret = bindings.CResult_QueryChannelRangeDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_QueryChannelRangeDecodeErrorZ ret_hu_conv = Result_QueryChannelRangeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_QueryShortChannelIdsDecodeErrorZ ok(QueryShortChannelIds o) {
long ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_QueryShortChannelIdsDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_QueryShortChannelIdsDecodeErrorZ clone() {
long ret = bindings.CResult_QueryShortChannelIdsDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_QueryShortChannelIdsDecodeErrorZ ret_hu_conv = Result_QueryShortChannelIdsDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RecoverableSignatureNoneZ ok(byte[] arg) {
long ret = bindings.CResult_RecoverableSignatureNoneZ_ok(arg);
+ if (ret < 1024) { return null; }
Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RecoverableSignatureNoneZ err() {
long ret = bindings.CResult_RecoverableSignatureNoneZ_err();
+ if (ret < 1024) { return null; }
Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_RecoverableSignatureNoneZ clone() {
long ret = bindings.CResult_RecoverableSignatureNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RecoverableSignatureNoneZ ret_hu_conv = Result_RecoverableSignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ReplyChannelRangeDecodeErrorZ ok(ReplyChannelRange o) {
long ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ReplyChannelRangeDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ReplyChannelRangeDecodeErrorZ clone() {
long ret = bindings.CResult_ReplyChannelRangeDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ReplyChannelRangeDecodeErrorZ ret_hu_conv = Result_ReplyChannelRangeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ReplyShortChannelIdsEndDecodeErrorZ ok(ReplyShortChannelIdsEnd o) {
long ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ReplyShortChannelIdsEndDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ReplyShortChannelIdsEndDecodeErrorZ clone() {
long ret = bindings.CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ReplyShortChannelIdsEndDecodeErrorZ ret_hu_conv = Result_ReplyShortChannelIdsEndDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RevokeAndACKDecodeErrorZ ok(RevokeAndACK o) {
long ret = bindings.CResult_RevokeAndACKDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_RevokeAndACKDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_RevokeAndACKDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_RevokeAndACKDecodeErrorZ clone() {
long ret = bindings.CResult_RevokeAndACKDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RouteDecodeErrorZ ok(Route o) {
long ret = bindings.CResult_RouteDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_RouteDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_RouteDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_RouteDecodeErrorZ clone() {
long ret = bindings.CResult_RouteDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RouteHopDecodeErrorZ ok(RouteHop o) {
long ret = bindings.CResult_RouteHopDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_RouteHopDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_RouteHopDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_RouteHopDecodeErrorZ clone() {
long ret = bindings.CResult_RouteHopDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RouteLightningErrorZ ok(Route o) {
long ret = bindings.CResult_RouteLightningErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_RouteLightningErrorZ err(LightningError e) {
long ret = bindings.CResult_RouteLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_RouteLightningErrorZ clone() {
long ret = bindings.CResult_RouteLightningErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_RoutingFeesDecodeErrorZ ok(RoutingFees o) {
long ret = bindings.CResult_RoutingFeesDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_RoutingFeesDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_RoutingFeesDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_RoutingFeesDecodeErrorZ clone() {
long ret = bindings.CResult_RoutingFeesDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SecretKeyErrorZ ok(byte[] o) {
long ret = bindings.CResult_SecretKeyErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SecretKeyErrorZ err(Secp256k1Error e) {
long ret = bindings.CResult_SecretKeyErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_ShutdownDecodeErrorZ ok(Shutdown o) {
long ret = bindings.CResult_ShutdownDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_ShutdownDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_ShutdownDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_ShutdownDecodeErrorZ clone() {
long ret = bindings.CResult_ShutdownDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SiPrefixNoneZ ok(SiPrefix o) {
long ret = bindings.CResult_SiPrefixNoneZ_ok(o);
+ if (ret < 1024) { return null; }
Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SiPrefixNoneZ err() {
long ret = bindings.CResult_SiPrefixNoneZ_err();
+ if (ret < 1024) { return null; }
Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_SiPrefixNoneZ clone() {
long ret = bindings.CResult_SiPrefixNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_SiPrefixNoneZ ret_hu_conv = Result_SiPrefixNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SignDecodeErrorZ ok(Sign o) {
long ret = bindings.CResult_SignDecodeErrorZ_ok(o == null ? 0 : o.ptr);
+ if (ret < 1024) { return null; }
Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_SignDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_SignDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_SignDecodeErrorZ clone() {
long ret = bindings.CResult_SignDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_SignDecodeErrorZ ret_hu_conv = Result_SignDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SignatureNoneZ ok(byte[] o) {
long ret = bindings.CResult_SignatureNoneZ_ok(o);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SignatureNoneZ err() {
long ret = bindings.CResult_SignatureNoneZ_err();
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_SignatureNoneZ clone() {
long ret = bindings.CResult_SignatureNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_SignatureNoneZ ret_hu_conv = Result_SignatureNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SignedRawInvoiceNoneZ ok(SignedRawInvoice o) {
long ret = bindings.CResult_SignedRawInvoiceNoneZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_SignedRawInvoiceNoneZ err() {
long ret = bindings.CResult_SignedRawInvoiceNoneZ_err();
+ if (ret < 1024) { return null; }
Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_SignedRawInvoiceNoneZ clone() {
long ret = bindings.CResult_SignedRawInvoiceNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SpendableOutputDescriptorDecodeErrorZ ok(SpendableOutputDescriptor o) {
long ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_ok(o.ptr);
+ if (ret < 1024) { return null; }
Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SpendableOutputDescriptorDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_SpendableOutputDescriptorDecodeErrorZ clone() {
long ret = bindings.CResult_SpendableOutputDescriptorDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_StaticPaymentOutputDescriptorDecodeErrorZ ok(StaticPaymentOutputDescriptor o) {
long ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_StaticPaymentOutputDescriptorDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_StaticPaymentOutputDescriptorDecodeErrorZ clone() {
long ret = bindings.CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_StringErrorZ ok(String o) {
long ret = bindings.CResult_StringErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_StringErrorZ err(Secp256k1Error e) {
long ret = bindings.CResult_StringErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TransactionNoneZ ok(byte[] o) {
long ret = bindings.CResult_TransactionNoneZ_ok(o);
+ if (ret < 1024) { return null; }
Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TransactionNoneZ err() {
long ret = bindings.CResult_TransactionNoneZ_err();
+ if (ret < 1024) { return null; }
Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_TransactionNoneZ clone() {
long ret = bindings.CResult_TransactionNoneZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_TransactionNoneZ ret_hu_conv = Result_TransactionNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TrustedCommitmentTransactionNoneZ ok(TrustedCommitmentTransaction o) {
long ret = bindings.CResult_TrustedCommitmentTransactionNoneZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
// Due to rust's strict-ownership memory model, in some cases we need to "move"
*/
public static Result_TrustedCommitmentTransactionNoneZ err() {
long ret = bindings.CResult_TrustedCommitmentTransactionNoneZ_err();
+ if (ret < 1024) { return null; }
Result_TrustedCommitmentTransactionNoneZ ret_hu_conv = Result_TrustedCommitmentTransactionNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxCreationKeysDecodeErrorZ ok(TxCreationKeys o) {
long ret = bindings.CResult_TxCreationKeysDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_TxCreationKeysDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_TxCreationKeysDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_TxCreationKeysDecodeErrorZ clone() {
long ret = bindings.CResult_TxCreationKeysDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxCreationKeysErrorZ ok(TxCreationKeys o) {
long ret = bindings.CResult_TxCreationKeysErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_TxCreationKeysErrorZ err(Secp256k1Error e) {
long ret = bindings.CResult_TxCreationKeysErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_TxCreationKeysErrorZ clone() {
long ret = bindings.CResult_TxCreationKeysErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxOutAccessErrorZ ok(TxOut o) {
long ret = bindings.CResult_TxOutAccessErrorZ_ok(o.ptr);
+ if (ret < 1024) { return null; }
Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxOutAccessErrorZ err(AccessError e) {
long ret = bindings.CResult_TxOutAccessErrorZ_err(e);
+ if (ret < 1024) { return null; }
Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public Result_TxOutAccessErrorZ clone() {
long ret = bindings.CResult_TxOutAccessErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_TxOutAccessErrorZ ret_hu_conv = Result_TxOutAccessErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UnsignedChannelAnnouncementDecodeErrorZ ok(UnsignedChannelAnnouncement o) {
long ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UnsignedChannelAnnouncementDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UnsignedChannelAnnouncementDecodeErrorZ clone() {
long ret = bindings.CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UnsignedChannelUpdateDecodeErrorZ ok(UnsignedChannelUpdate o) {
long ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UnsignedChannelUpdateDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UnsignedChannelUpdateDecodeErrorZ clone() {
long ret = bindings.CResult_UnsignedChannelUpdateDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UnsignedNodeAnnouncementDecodeErrorZ ok(UnsignedNodeAnnouncement o) {
long ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UnsignedNodeAnnouncementDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UnsignedNodeAnnouncementDecodeErrorZ clone() {
long ret = bindings.CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UpdateAddHTLCDecodeErrorZ ok(UpdateAddHTLC o) {
long ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UpdateAddHTLCDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UpdateAddHTLCDecodeErrorZ clone() {
long ret = bindings.CResult_UpdateAddHTLCDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UpdateFailHTLCDecodeErrorZ ok(UpdateFailHTLC o) {
long ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UpdateFailHTLCDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UpdateFailHTLCDecodeErrorZ clone() {
long ret = bindings.CResult_UpdateFailHTLCDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UpdateFailMalformedHTLCDecodeErrorZ ok(UpdateFailMalformedHTLC o) {
long ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UpdateFailMalformedHTLCDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UpdateFailMalformedHTLCDecodeErrorZ clone() {
long ret = bindings.CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UpdateFeeDecodeErrorZ ok(UpdateFee o) {
long ret = bindings.CResult_UpdateFeeDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UpdateFeeDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UpdateFeeDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UpdateFeeDecodeErrorZ clone() {
long ret = bindings.CResult_UpdateFeeDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_UpdateFulfillHTLCDecodeErrorZ ok(UpdateFulfillHTLC o) {
long ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_ok(o == null ? 0 : o.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(o);
return ret_hu_conv;
*/
public static Result_UpdateFulfillHTLCDecodeErrorZ err(DecodeError e) {
long ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_UpdateFulfillHTLCDecodeErrorZ clone() {
long ret = bindings.CResult_UpdateFulfillHTLCDecodeErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_boolLightningErrorZ ok(boolean o) {
long ret = bindings.CResult_boolLightningErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_boolLightningErrorZ err(LightningError e) {
long ret = bindings.CResult_boolLightningErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_boolLightningErrorZ clone() {
long ret = bindings.CResult_boolLightningErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_boolPeerHandleErrorZ ok(boolean o) {
long ret = bindings.CResult_boolPeerHandleErrorZ_ok(o);
+ if (ret < 1024) { return null; }
Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_boolPeerHandleErrorZ err(PeerHandleError e) {
long ret = bindings.CResult_boolPeerHandleErrorZ_err(e == null ? 0 : e.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(e);
return ret_hu_conv;
*/
public Result_boolPeerHandleErrorZ clone() {
long ret = bindings.CResult_boolPeerHandleErrorZ_clone(this.ptr);
+ if (ret < 1024) { return null; }
Result_boolPeerHandleErrorZ ret_hu_conv = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static RevokeAndACK of(byte[] channel_id_arg, byte[] per_commitment_secret_arg, byte[] next_per_commitment_point_arg) {
long ret = bindings.RevokeAndACK_new(channel_id_arg, per_commitment_secret_arg, next_per_commitment_point_arg);
+ if (ret < 1024) { return null; }
RevokeAndACK ret_hu_conv = new RevokeAndACK(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public RevokeAndACK clone() {
long ret = bindings.RevokeAndACK_clone(this.ptr);
+ if (ret < 1024) { return null; }
RevokeAndACK ret_hu_conv = new RevokeAndACK(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_RevokeAndACKDecodeErrorZ read(byte[] ser) {
long ret = bindings.RevokeAndACK_read(ser);
+ if (ret < 1024) { return null; }
Result_RevokeAndACKDecodeErrorZ ret_hu_conv = Result_RevokeAndACKDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Route of(RouteHop[][] paths_arg) {
long ret = bindings.Route_new(Arrays.stream(paths_arg).map(paths_arg_conv_12 -> Arrays.stream(paths_arg_conv_12).mapToLong(paths_arg_conv_12_conv_10 -> paths_arg_conv_12_conv_10 == null ? 0 : paths_arg_conv_12_conv_10.ptr & ~1).toArray()).toArray(long[][]::new));
+ if (ret < 1024) { return null; }
Route ret_hu_conv = new Route(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
/* TODO 2 RouteHop[] */;
*/
public Route clone() {
long ret = bindings.Route_clone(this.ptr);
+ if (ret < 1024) { return null; }
Route ret_hu_conv = new Route(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_RouteDecodeErrorZ read(byte[] ser) {
long ret = bindings.Route_read(ser);
+ if (ret < 1024) { return null; }
Result_RouteDecodeErrorZ ret_hu_conv = Result_RouteDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public RouteHint clone() {
long ret = bindings.RouteHint_clone(this.ptr);
+ if (ret < 1024) { return null; }
RouteHint ret_hu_conv = new RouteHint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public RoutingFees get_fees() {
long ret = bindings.RouteHintHop_get_fees(this.ptr);
+ if (ret < 1024) { return null; }
RoutingFees ret_hu_conv = new RoutingFees(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u64Z get_htlc_minimum_msat() {
long ret = bindings.RouteHintHop_get_htlc_minimum_msat(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Option_u64Z get_htlc_maximum_msat() {
long ret = bindings.RouteHintHop_get_htlc_maximum_msat(this.ptr);
+ if (ret < 1024) { return null; }
Option_u64Z ret_hu_conv = Option_u64Z.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static RouteHintHop of(byte[] src_node_id_arg, long short_channel_id_arg, RoutingFees fees_arg, short cltv_expiry_delta_arg, Option_u64Z htlc_minimum_msat_arg, Option_u64Z htlc_maximum_msat_arg) {
long ret = bindings.RouteHintHop_new(src_node_id_arg, short_channel_id_arg, fees_arg == null ? 0 : fees_arg.ptr & ~1, cltv_expiry_delta_arg, htlc_minimum_msat_arg.ptr, htlc_maximum_msat_arg.ptr);
+ if (ret < 1024) { return null; }
RouteHintHop ret_hu_conv = new RouteHintHop(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(fees_arg);
*/
public RouteHintHop clone() {
long ret = bindings.RouteHintHop_clone(this.ptr);
+ if (ret < 1024) { return null; }
RouteHintHop ret_hu_conv = new RouteHintHop(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public NodeFeatures get_node_features() {
long ret = bindings.RouteHop_get_node_features(this.ptr);
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelFeatures get_channel_features() {
long ret = bindings.RouteHop_get_channel_features(this.ptr);
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static RouteHop of(byte[] pubkey_arg, NodeFeatures node_features_arg, long short_channel_id_arg, ChannelFeatures channel_features_arg, long fee_msat_arg, int cltv_expiry_delta_arg) {
long ret = bindings.RouteHop_new(pubkey_arg, node_features_arg == null ? 0 : node_features_arg.ptr & ~1, short_channel_id_arg, channel_features_arg == null ? 0 : channel_features_arg.ptr & ~1, fee_msat_arg, cltv_expiry_delta_arg);
+ if (ret < 1024) { return null; }
RouteHop ret_hu_conv = new RouteHop(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(node_features_arg);
*/
public RouteHop clone() {
long ret = bindings.RouteHop_clone(this.ptr);
+ if (ret < 1024) { return null; }
RouteHop ret_hu_conv = new RouteHop(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_RouteHopDecodeErrorZ read(byte[] ser) {
long ret = bindings.RouteHop_read(ser);
+ if (ret < 1024) { return null; }
Result_RouteHopDecodeErrorZ ret_hu_conv = Result_RouteHopDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static RoutingFees of(int base_msat_arg, int proportional_millionths_arg) {
long ret = bindings.RoutingFees_new(base_msat_arg, proportional_millionths_arg);
+ if (ret < 1024) { return null; }
RoutingFees ret_hu_conv = new RoutingFees(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public RoutingFees clone() {
long ret = bindings.RoutingFees_clone(this.ptr);
+ if (ret < 1024) { return null; }
RoutingFees ret_hu_conv = new RoutingFees(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_RoutingFeesDecodeErrorZ read(byte[] ser) {
long ret = bindings.RoutingFees_read(ser);
+ if (ret < 1024) { return null; }
Result_RoutingFeesDecodeErrorZ ret_hu_conv = Result_RoutingFeesDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
* starting at the node *after* the provided publickey and including batch_amount entries
* immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
* If None is provided for starting_point, we start at the first node.
+ *
+ * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
NodeAnnouncement[] get_next_node_announcements(byte[] starting_point, byte batch_amount);
/**
}, MessageSendEventsProvider.new_impl(MessageSendEventsProvider_impl).bindings_instance);
return impl_holder.held;
}
+
+ /**
+ * Gets the underlying MessageSendEventsProvider.
+ */
+ public MessageSendEventsProvider get_message_send_events_provider() {
+ MessageSendEventsProvider res = new MessageSendEventsProvider(null, bindings.LDKRoutingMessageHandler_get_MessageSendEventsProvider(this.ptr));
+ this.ptrs_to.add(res);
+ return res;
+ }
+
/**
* Handle an incoming node_announcement message, returning true if it should be forwarded on,
* false or returning an Err otherwise.
*/
public Result_boolLightningErrorZ handle_node_announcement(NodeAnnouncement msg) {
long ret = bindings.RoutingMessageHandler_handle_node_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_boolLightningErrorZ handle_channel_announcement(ChannelAnnouncement msg) {
long ret = bindings.RoutingMessageHandler_handle_channel_announcement(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_boolLightningErrorZ handle_channel_update(ChannelUpdate msg) {
long ret = bindings.RoutingMessageHandler_handle_channel_update(this.ptr, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_boolLightningErrorZ ret_hu_conv = Result_boolLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
* starting at the node *after* the provided publickey and including batch_amount entries
* immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
* If None is provided for starting_point, we start at the first node.
+ *
+ * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public NodeAnnouncement[] get_next_node_announcements(byte[] starting_point, byte batch_amount) {
+ public NodeAnnouncement[] get_next_node_announcements(@Nullable byte[] starting_point, byte batch_amount) {
long[] ret = bindings.RoutingMessageHandler_get_next_node_announcements(this.ptr, starting_point, batch_amount);
NodeAnnouncement[] ret_conv_18_arr = new NodeAnnouncement[ret.length];
for (int s = 0; s < ret.length; s++) {
*/
public Result_NoneLightningErrorZ handle_reply_channel_range(byte[] their_node_id, ReplyChannelRange msg) {
long ret = bindings.RoutingMessageHandler_handle_reply_channel_range(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ handle_reply_short_channel_ids_end(byte[] their_node_id, ReplyShortChannelIdsEnd msg) {
long ret = bindings.RoutingMessageHandler_handle_reply_short_channel_ids_end(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ handle_query_channel_range(byte[] their_node_id, QueryChannelRange msg) {
long ret = bindings.RoutingMessageHandler_handle_query_channel_range(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Result_NoneLightningErrorZ handle_query_short_channel_ids(byte[] their_node_id, QueryShortChannelIds msg) {
long ret = bindings.RoutingMessageHandler_handle_query_short_channel_ids(this.ptr, their_node_id, msg == null ? 0 : msg.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
this.ptrs_to.add(msg);
return ret_hu_conv;
*/
public Sha256 clone() {
long ret = bindings.Sha256_clone(this.ptr);
+ if (ret < 1024) { return null; }
Sha256 ret_hu_conv = new Sha256(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Shutdown of(byte[] channel_id_arg, byte[] scriptpubkey_arg) {
long ret = bindings.Shutdown_new(channel_id_arg, scriptpubkey_arg);
+ if (ret < 1024) { return null; }
Shutdown ret_hu_conv = new Shutdown(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public Shutdown clone() {
long ret = bindings.Shutdown_clone(this.ptr);
+ if (ret < 1024) { return null; }
Shutdown ret_hu_conv = new Shutdown(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_ShutdownDecodeErrorZ read(byte[] ser) {
long ret = bindings.Shutdown_read(ser);
+ if (ret < 1024) { return null; }
Result_ShutdownDecodeErrorZ ret_hu_conv = Result_ShutdownDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
}, BaseSign.new_impl(BaseSign_impl, pubkeys).bindings_instance, pubkeys);
return impl_holder.held;
}
+
+ /**
+ * Gets the underlying BaseSign.
+ */
+ public BaseSign get_base_sign() {
+ BaseSign res = new BaseSign(null, bindings.LDKSign_get_BaseSign(this.ptr));
+ this.ptrs_to.add(res);
+ return res;
+ }
+
/**
* Serialize the object into a byte array
*/
*/
public Sign clone() {
long ret = bindings.Sign_clone(this.ptr);
+ if (ret < 1024) { return null; }
Sign ret_hu_conv = new Sign(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public SignOrCreationError clone() {
long ret = bindings.SignOrCreationError_clone(this.ptr);
+ if (ret < 1024) { return null; }
SignOrCreationError ret_hu_conv = SignOrCreationError.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public SignedRawInvoice clone() {
long ret = bindings.SignedRawInvoice_clone(this.ptr);
+ if (ret < 1024) { return null; }
SignedRawInvoice ret_hu_conv = new SignedRawInvoice(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ThreeTuple<RawInvoice, byte[], InvoiceSignature> into_parts() {
long ret = bindings.SignedRawInvoice_into_parts(this.ptr);
+ if (ret < 1024) { return null; }
long ret_a = bindings.LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(ret);
RawInvoice ret_a_hu_conv = new RawInvoice(null, ret_a);
ret_a_hu_conv.ptrs_to.add(this);;
*/
public RawInvoice raw_invoice() {
long ret = bindings.SignedRawInvoice_raw_invoice(this.ptr);
+ if (ret < 1024) { return null; }
RawInvoice ret_hu_conv = new RawInvoice(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public InvoiceSignature signature() {
long ret = bindings.SignedRawInvoice_signature(this.ptr);
+ if (ret < 1024) { return null; }
InvoiceSignature ret_hu_conv = new InvoiceSignature(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_PayeePubKeyErrorZ recover_payee_pub_key() {
long ret = bindings.SignedRawInvoice_recover_payee_pub_key(this.ptr);
+ if (ret < 1024) { return null; }
Result_PayeePubKeyErrorZ ret_hu_conv = Result_PayeePubKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SignedRawInvoiceNoneZ from_str(String s) {
long ret = bindings.SignedRawInvoice_from_str(s);
+ if (ret < 1024) { return null; }
Result_SignedRawInvoiceNoneZ ret_hu_conv = Result_SignedRawInvoiceNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public SocketDescriptor clone() {
long ret = bindings.SocketDescriptor_clone(this.ptr);
+ if (ret < 1024) { return null; }
SocketDescriptor ret_hu_conv = new SocketDescriptor(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public SpendableOutputDescriptor clone() {
long ret = bindings.SpendableOutputDescriptor_clone(this.ptr);
+ if (ret < 1024) { return null; }
SpendableOutputDescriptor ret_hu_conv = SpendableOutputDescriptor.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_SpendableOutputDescriptorDecodeErrorZ read(byte[] ser) {
long ret = bindings.SpendableOutputDescriptor_read(ser);
+ if (ret < 1024) { return null; }
Result_SpendableOutputDescriptorDecodeErrorZ ret_hu_conv = Result_SpendableOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public OutPoint get_outpoint() {
long ret = bindings.StaticPaymentOutputDescriptor_get_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static StaticPaymentOutputDescriptor of(OutPoint outpoint_arg, TxOut output_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg) {
long ret = bindings.StaticPaymentOutputDescriptor_new(outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, output_arg.ptr, channel_keys_id_arg, channel_value_satoshis_arg);
+ if (ret < 1024) { return null; }
StaticPaymentOutputDescriptor ret_hu_conv = new StaticPaymentOutputDescriptor(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(outpoint_arg);
*/
public StaticPaymentOutputDescriptor clone() {
long ret = bindings.StaticPaymentOutputDescriptor_clone(this.ptr);
+ if (ret < 1024) { return null; }
StaticPaymentOutputDescriptor ret_hu_conv = new StaticPaymentOutputDescriptor(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_StaticPaymentOutputDescriptorDecodeErrorZ read(byte[] ser) {
long ret = bindings.StaticPaymentOutputDescriptor_read(ser);
+ if (ret < 1024) { return null; }
Result_StaticPaymentOutputDescriptorDecodeErrorZ ret_hu_conv = Result_StaticPaymentOutputDescriptorDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public BuiltCommitmentTransaction built_transaction() {
long ret = bindings.TrustedCommitmentTransaction_built_transaction(this.ptr);
+ if (ret < 1024) { return null; }
BuiltCommitmentTransaction ret_hu_conv = new BuiltCommitmentTransaction(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public TxCreationKeys keys() {
long ret = bindings.TrustedCommitmentTransaction_keys(this.ptr);
+ if (ret < 1024) { return null; }
TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public Result_CVec_SignatureZNoneZ get_htlc_sigs(byte[] htlc_base_key, DirectedChannelTransactionParameters channel_parameters) {
long ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, htlc_base_key, channel_parameters == null ? 0 : channel_parameters.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_CVec_SignatureZNoneZ ret_hu_conv = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
this.ptrs_to.add(channel_parameters);
return ret_hu_conv;
*/
public static TxCreationKeys of(byte[] per_commitment_point_arg, byte[] revocation_key_arg, byte[] broadcaster_htlc_key_arg, byte[] countersignatory_htlc_key_arg, byte[] broadcaster_delayed_payment_key_arg) {
long ret = bindings.TxCreationKeys_new(per_commitment_point_arg, revocation_key_arg, broadcaster_htlc_key_arg, countersignatory_htlc_key_arg, broadcaster_delayed_payment_key_arg);
+ if (ret < 1024) { return null; }
TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public TxCreationKeys clone() {
long ret = bindings.TxCreationKeys_clone(this.ptr);
+ if (ret < 1024) { return null; }
TxCreationKeys ret_hu_conv = new TxCreationKeys(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_TxCreationKeysDecodeErrorZ read(byte[] ser) {
long ret = bindings.TxCreationKeys_read(ser);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysDecodeErrorZ ret_hu_conv = Result_TxCreationKeysDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxCreationKeysErrorZ derive_new(byte[] per_commitment_point, byte[] broadcaster_delayed_payment_base, byte[] broadcaster_htlc_base, byte[] countersignatory_revocation_base, byte[] countersignatory_htlc_base) {
long ret = bindings.TxCreationKeys_derive_new(per_commitment_point, broadcaster_delayed_payment_base, broadcaster_htlc_base, countersignatory_revocation_base, countersignatory_htlc_base);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_TxCreationKeysErrorZ from_channel_static_keys(byte[] per_commitment_point, ChannelPublicKeys broadcaster_keys, ChannelPublicKeys countersignatory_keys) {
long ret = bindings.TxCreationKeys_from_channel_static_keys(per_commitment_point, broadcaster_keys == null ? 0 : broadcaster_keys.ptr & ~1, countersignatory_keys == null ? 0 : countersignatory_keys.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_TxCreationKeysErrorZ ret_hu_conv = Result_TxCreationKeysErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(broadcaster_keys);
ret_hu_conv.ptrs_to.add(countersignatory_keys);
*/
public ChannelFeatures get_features() {
long ret = bindings.UnsignedChannelAnnouncement_get_features(this.ptr);
+ if (ret < 1024) { return null; }
ChannelFeatures ret_hu_conv = new ChannelFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public UnsignedChannelAnnouncement clone() {
long ret = bindings.UnsignedChannelAnnouncement_clone(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedChannelAnnouncement ret_hu_conv = new UnsignedChannelAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UnsignedChannelAnnouncementDecodeErrorZ read(byte[] ser) {
long ret = bindings.UnsignedChannelAnnouncement_read(ser);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedChannelAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public UnsignedChannelUpdate clone() {
long ret = bindings.UnsignedChannelUpdate_clone(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedChannelUpdate ret_hu_conv = new UnsignedChannelUpdate(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UnsignedChannelUpdateDecodeErrorZ read(byte[] ser) {
long ret = bindings.UnsignedChannelUpdate_read(ser);
+ if (ret < 1024) { return null; }
Result_UnsignedChannelUpdateDecodeErrorZ ret_hu_conv = Result_UnsignedChannelUpdateDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public NodeFeatures get_features() {
long ret = bindings.UnsignedNodeAnnouncement_get_features(this.ptr);
+ if (ret < 1024) { return null; }
NodeFeatures ret_hu_conv = new NodeFeatures(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public UnsignedNodeAnnouncement clone() {
long ret = bindings.UnsignedNodeAnnouncement_clone(this.ptr);
+ if (ret < 1024) { return null; }
UnsignedNodeAnnouncement ret_hu_conv = new UnsignedNodeAnnouncement(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UnsignedNodeAnnouncementDecodeErrorZ read(byte[] ser) {
long ret = bindings.UnsignedNodeAnnouncement_read(ser);
+ if (ret < 1024) { return null; }
Result_UnsignedNodeAnnouncementDecodeErrorZ ret_hu_conv = Result_UnsignedNodeAnnouncementDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public UpdateAddHTLC clone() {
long ret = bindings.UpdateAddHTLC_clone(this.ptr);
+ if (ret < 1024) { return null; }
UpdateAddHTLC ret_hu_conv = new UpdateAddHTLC(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UpdateAddHTLCDecodeErrorZ read(byte[] ser) {
long ret = bindings.UpdateAddHTLC_read(ser);
+ if (ret < 1024) { return null; }
Result_UpdateAddHTLCDecodeErrorZ ret_hu_conv = Result_UpdateAddHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public UpdateFailHTLC clone() {
long ret = bindings.UpdateFailHTLC_clone(this.ptr);
+ if (ret < 1024) { return null; }
UpdateFailHTLC ret_hu_conv = new UpdateFailHTLC(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UpdateFailHTLCDecodeErrorZ read(byte[] ser) {
long ret = bindings.UpdateFailHTLC_read(ser);
+ if (ret < 1024) { return null; }
Result_UpdateFailHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public UpdateFailMalformedHTLC clone() {
long ret = bindings.UpdateFailMalformedHTLC_clone(this.ptr);
+ if (ret < 1024) { return null; }
UpdateFailMalformedHTLC ret_hu_conv = new UpdateFailMalformedHTLC(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UpdateFailMalformedHTLCDecodeErrorZ read(byte[] ser) {
long ret = bindings.UpdateFailMalformedHTLC_read(ser);
+ if (ret < 1024) { return null; }
Result_UpdateFailMalformedHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFailMalformedHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static UpdateFee of(byte[] channel_id_arg, int feerate_per_kw_arg) {
long ret = bindings.UpdateFee_new(channel_id_arg, feerate_per_kw_arg);
+ if (ret < 1024) { return null; }
UpdateFee ret_hu_conv = new UpdateFee(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public UpdateFee clone() {
long ret = bindings.UpdateFee_clone(this.ptr);
+ if (ret < 1024) { return null; }
UpdateFee ret_hu_conv = new UpdateFee(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UpdateFeeDecodeErrorZ read(byte[] ser) {
long ret = bindings.UpdateFee_read(ser);
+ if (ret < 1024) { return null; }
Result_UpdateFeeDecodeErrorZ ret_hu_conv = Result_UpdateFeeDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static UpdateFulfillHTLC of(byte[] channel_id_arg, long htlc_id_arg, byte[] payment_preimage_arg) {
long ret = bindings.UpdateFulfillHTLC_new(channel_id_arg, htlc_id_arg, payment_preimage_arg);
+ if (ret < 1024) { return null; }
UpdateFulfillHTLC ret_hu_conv = new UpdateFulfillHTLC(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public UpdateFulfillHTLC clone() {
long ret = bindings.UpdateFulfillHTLC_clone(this.ptr);
+ if (ret < 1024) { return null; }
UpdateFulfillHTLC ret_hu_conv = new UpdateFulfillHTLC(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static Result_UpdateFulfillHTLCDecodeErrorZ read(byte[] ser) {
long ret = bindings.UpdateFulfillHTLC_read(ser);
+ if (ret < 1024) { return null; }
Result_UpdateFulfillHTLCDecodeErrorZ ret_hu_conv = Result_UpdateFulfillHTLCDecodeErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public ChannelHandshakeConfig get_own_channel_config() {
long ret = bindings.UserConfig_get_own_channel_config(this.ptr);
+ if (ret < 1024) { return null; }
ChannelHandshakeConfig ret_hu_conv = new ChannelHandshakeConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelHandshakeLimits get_peer_channel_config_limits() {
long ret = bindings.UserConfig_get_peer_channel_config_limits(this.ptr);
+ if (ret < 1024) { return null; }
ChannelHandshakeLimits ret_hu_conv = new ChannelHandshakeLimits(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public ChannelConfig get_channel_options() {
long ret = bindings.UserConfig_get_channel_options(this.ptr);
+ if (ret < 1024) { return null; }
ChannelConfig ret_hu_conv = new ChannelConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static UserConfig of(ChannelHandshakeConfig own_channel_config_arg, ChannelHandshakeLimits peer_channel_config_limits_arg, ChannelConfig channel_options_arg, boolean accept_forwards_to_priv_channels_arg) {
long ret = bindings.UserConfig_new(own_channel_config_arg == null ? 0 : own_channel_config_arg.ptr & ~1, peer_channel_config_limits_arg == null ? 0 : peer_channel_config_limits_arg.ptr & ~1, channel_options_arg == null ? 0 : channel_options_arg.ptr & ~1, accept_forwards_to_priv_channels_arg);
+ if (ret < 1024) { return null; }
UserConfig ret_hu_conv = new UserConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(own_channel_config_arg);
*/
public UserConfig clone() {
long ret = bindings.UserConfig_clone(this.ptr);
+ if (ret < 1024) { return null; }
UserConfig ret_hu_conv = new UserConfig(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static UserConfig with_default() {
long ret = bindings.UserConfig_default();
+ if (ret < 1024) { return null; }
UserConfig ret_hu_conv = new UserConfig(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
return ret_hu_conv;
*/
public static Result_StringErrorZ sign(byte[] msg, byte[] sk) {
long ret = bindings.sign(msg, sk);
+ if (ret < 1024) { return null; }
Result_StringErrorZ ret_hu_conv = Result_StringErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PublicKeyErrorZ recover_pk(byte[] msg, String sig) {
long ret = bindings.recover_pk(msg, sig);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ BlockHashChannelMonitorZ_read(byte[] ser, KeysInterface arg) {
long ret = bindings.C2Tuple_BlockHashChannelMonitorZ_read(ser, arg == null ? 0 : arg.ptr);
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(arg);
return ret_hu_conv;
*/
public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ BlockHashChannelManagerZ_read(byte[] ser, KeysInterface arg_keys_manager, FeeEstimator arg_fee_estimator, Watch arg_chain_monitor, BroadcasterInterface arg_tx_broadcaster, Logger arg_logger, UserConfig arg_default_config, ChannelMonitor[] arg_channel_monitors) {
long ret = bindings.C2Tuple_BlockHashChannelManagerZ_read(ser, bindings.ChannelManagerReadArgs_new(arg_keys_manager == null ? 0 : arg_keys_manager.ptr, arg_fee_estimator == null ? 0 : arg_fee_estimator.ptr, arg_chain_monitor == null ? 0 : arg_chain_monitor.ptr, arg_tx_broadcaster == null ? 0 : arg_tx_broadcaster.ptr, arg_logger == null ? 0 : arg_logger.ptr, arg_default_config == null ? 0 : arg_default_config.ptr & ~1, Arrays.stream(arg_channel_monitors).mapToLong(arg_channel_monitors_conv_16 -> arg_channel_monitors_conv_16 == null ? 0 : arg_channel_monitors_conv_16.ptr & ~1).toArray()));
+ if (ret < 1024) { return null; }
Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(arg_keys_manager);
ret_hu_conv.ptrs_to.add(arg_fee_estimator);
*/
public static Result_SecretKeyErrorZ derive_private_key(byte[] per_commitment_point, byte[] base_secret) {
long ret = bindings.derive_private_key(per_commitment_point, base_secret);
+ if (ret < 1024) { return null; }
Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PublicKeyErrorZ derive_public_key(byte[] per_commitment_point, byte[] base_point) {
long ret = bindings.derive_public_key(per_commitment_point, base_point);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_SecretKeyErrorZ derive_private_revocation_key(byte[] per_commitment_secret, byte[] countersignatory_revocation_base_secret) {
long ret = bindings.derive_private_revocation_key(per_commitment_secret, countersignatory_revocation_base_secret);
+ if (ret < 1024) { return null; }
Result_SecretKeyErrorZ ret_hu_conv = Result_SecretKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
*/
public static Result_PublicKeyErrorZ derive_public_revocation_key(byte[] per_commitment_point, byte[] countersignatory_revocation_base_point) {
long ret = bindings.derive_public_revocation_key(per_commitment_point, countersignatory_revocation_base_point);
+ if (ret < 1024) { return null; }
Result_PublicKeyErrorZ ret_hu_conv = Result_PublicKeyErrorZ.constr_from_ptr(ret);
return ret_hu_conv;
}
return ret;
}
+ /**
+ * Gets a keysend route from us (payer) to the given target node (payee). This is needed because
+ * keysend payments do not have an invoice from which to pull the payee's supported features, which
+ * makes it tricky to otherwise supply the `payee_features` parameter of `get_route`.
+ *
+ * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
+ */
+ public static Result_RouteLightningErrorZ get_keysend_route(byte[] our_node_id, NetworkGraph network, byte[] payee, @Nullable ChannelDetails[] first_hops, RouteHint[] last_hops, long final_value_msat, int final_cltv, Logger logger) {
+ long ret = bindings.get_keysend_route(our_node_id, network == null ? 0 : network.ptr & ~1, payee, Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray(), Arrays.stream(last_hops).mapToLong(last_hops_conv_11 -> last_hops_conv_11 == null ? 0 : last_hops_conv_11.ptr & ~1).toArray(), final_value_msat, final_cltv, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
+ Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
+ ret_hu_conv.ptrs_to.add(network);
+ /* TODO 2 ChannelDetails */;
+ /* TODO 2 RouteHint */;
+ ret_hu_conv.ptrs_to.add(logger);
+ return ret_hu_conv;
+ }
+
/**
* Gets a route from us (payer) to the given target node (payee).
*
* The fees on channels from us to next-hops are ignored (as they are assumed to all be
* equal), however the enabled/disabled bit on such channels as well as the
* htlc_minimum_msat/htlc_maximum_msat *are* checked as they may change based on the receiving node.
+ *
+ * Note that payee_features (or a relevant inner pointer) may be NULL or all-0s to represent None
+ * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public static Result_RouteLightningErrorZ get_route(byte[] our_node_id, NetworkGraph network, byte[] payee, InvoiceFeatures payee_features, ChannelDetails[] first_hops, RouteHint[] last_hops, long final_value_msat, int final_cltv, Logger logger) {
+ public static Result_RouteLightningErrorZ get_route(byte[] our_node_id, NetworkGraph network, byte[] payee, @Nullable InvoiceFeatures payee_features, ChannelDetails[] first_hops, RouteHint[] last_hops, long final_value_msat, int final_cltv, Logger logger) {
long ret = bindings.get_route(our_node_id, network == null ? 0 : network.ptr & ~1, payee, payee_features == null ? 0 : payee_features.ptr & ~1, Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr & ~1).toArray(), Arrays.stream(last_hops).mapToLong(last_hops_conv_11 -> last_hops_conv_11 == null ? 0 : last_hops_conv_11.ptr & ~1).toArray(), final_value_msat, final_cltv, logger == null ? 0 : logger.ptr);
+ if (ret < 1024) { return null; }
Result_RouteLightningErrorZ ret_hu_conv = Result_RouteLightningErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(network);
ret_hu_conv.ptrs_to.add(payee_features);
*/
public static Result_NoneErrorZ FilesystemPersister_persist_manager(String data_dir, ChannelManager manager) {
long ret = bindings.FilesystemPersister_persist_manager(data_dir, manager == null ? 0 : manager.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(manager);
return ret_hu_conv;
*/
public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(ChannelManager channelmanager, KeysInterface keys_manager, Currency network, Option_u64Z amt_msat, String description) {
long ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr & ~1, keys_manager == null ? 0 : keys_manager.ptr, network, amt_msat.ptr, description);
+ if (ret < 1024) { return null; }
Result_InvoiceSignOrCreationErrorZ ret_hu_conv = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
ret_hu_conv.ptrs_to.add(channelmanager);
ret_hu_conv.ptrs_to.add(keys_manager);
*/
public Result_NoneChannelMonitorUpdateErrZ watch_channel(OutPoint funding_txo, ChannelMonitor monitor) {
long ret = bindings.Watch_watch_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, monitor == null ? 0 : monitor.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
this.ptrs_to.add(funding_txo);
this.ptrs_to.add(monitor);
*/
public Result_NoneChannelMonitorUpdateErrZ update_channel(OutPoint funding_txo, ChannelMonitorUpdate update) {
long ret = bindings.Watch_update_channel(this.ptr, funding_txo == null ? 0 : funding_txo.ptr & ~1, update == null ? 0 : update.ptr & ~1);
+ if (ret < 1024) { return null; }
Result_NoneChannelMonitorUpdateErrZ ret_hu_conv = Result_NoneChannelMonitorUpdateErrZ.constr_from_ptr(ret);
this.ptrs_to.add(funding_txo);
this.ptrs_to.add(update);
/**
* First block where the transaction output may have been spent.
+ *
+ * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
+ @Nullable
public byte[] get_block_hash() {
byte[] ret = bindings.WatchedOutput_get_block_hash(this.ptr);
return ret;
/**
* First block where the transaction output may have been spent.
+ *
+ * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
*/
- public void set_block_hash(byte[] val) {
+ public void set_block_hash(@Nullable byte[] val) {
bindings.WatchedOutput_set_block_hash(this.ptr, val);
}
*/
public OutPoint get_outpoint() {
long ret = bindings.WatchedOutput_get_outpoint(this.ptr);
+ if (ret < 1024) { return null; }
OutPoint ret_hu_conv = new OutPoint(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
*/
public static WatchedOutput of(byte[] block_hash_arg, OutPoint outpoint_arg, byte[] script_pubkey_arg) {
long ret = bindings.WatchedOutput_new(block_hash_arg, outpoint_arg == null ? 0 : outpoint_arg.ptr & ~1, script_pubkey_arg);
+ if (ret < 1024) { return null; }
WatchedOutput ret_hu_conv = new WatchedOutput(null, ret);
ret_hu_conv.ptrs_to.add(ret_hu_conv);
ret_hu_conv.ptrs_to.add(outpoint_arg);
*/
public WatchedOutput clone() {
long ret = bindings.WatchedOutput_clone(this.ptr);
+ if (ret < 1024) { return null; }
WatchedOutput ret_hu_conv = new WatchedOutput(null, ret);
ret_hu_conv.ptrs_to.add(this);
return ret_hu_conv;
#include <stdlib.h>
#define DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__)
-#define MALLOC(a, _) malloc(a)
-#define FREE(p) if ((uint64_t)(p) > 1024) { free(p); }
-#define DO_ASSERT(a) (void)(a)
-#define CHECK(a)
+#include <assert.h>
+// Always run a, then assert it is true:
+#define DO_ASSERT(a) do { bool _assert_val = (a); assert(_assert_val); } while(0)
+// Assert a is true or do nothing
+#define CHECK(a) DO_ASSERT(a)
+
+void __attribute__((constructor)) debug_log_version() {
+ if (check_get_ldk_version() == NULL)
+ DEBUG_PRINT("LDK version did not match the header we built against\n");
+ if (check_get_ldk_bindings_version() == NULL)
+ DEBUG_PRINT("LDK C Bindings version did not match the header we built against\n");
+ DEBUG_PRINT("Loaded LDK-Java Bindings with LDK %s and LDK-C-Bindings %s\n", check_get_ldk_version(), check_get_ldk_bindings_version());
+}
+
+// Running a leak check across all the allocations and frees of the JDK is a mess,
+// so instead we implement our own naive leak checker here, relying on the -wrap
+// linker option to wrap malloc/calloc/realloc/free, tracking everyhing allocated
+// and free'd in Rust or C across the generated bindings shared library.
+#include <threads.h>
+#include <execinfo.h>
+
+#include <unistd.h>
+static mtx_t allocation_mtx;
+
+void __attribute__((constructor)) init_mtx() {
+ DO_ASSERT(mtx_init(&allocation_mtx, mtx_plain) == thrd_success);
+}
+
+#define BT_MAX 128
+typedef struct allocation {
+ struct allocation* next;
+ void* ptr;
+ const char* struct_name;
+ void* bt[BT_MAX];
+ int bt_len;
+ unsigned long alloc_len;
+} allocation;
+static allocation* allocation_ll = NULL;
+
+void* __real_malloc(size_t len);
+void* __real_calloc(size_t nmemb, size_t len);
+static void new_allocation(void* res, const char* struct_name, size_t len) {
+ allocation* new_alloc = __real_malloc(sizeof(allocation));
+ new_alloc->ptr = res;
+ new_alloc->struct_name = struct_name;
+ new_alloc->bt_len = backtrace(new_alloc->bt, BT_MAX);
+ new_alloc->alloc_len = len;
+ DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success);
+ new_alloc->next = allocation_ll;
+ allocation_ll = new_alloc;
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+}
+static void* MALLOC(size_t len, const char* struct_name) {
+ void* res = __real_malloc(len);
+ new_allocation(res, struct_name, len);
+ return res;
+}
+void __real_free(void* ptr);
+static void alloc_freed(void* ptr) {
+ allocation* p = NULL;
+ DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success);
+ allocation* it = allocation_ll;
+ while (it->ptr != ptr) {
+ p = it; it = it->next;
+ if (it == NULL) {
+ DEBUG_PRINT("Tried to free unknown pointer %p at:\n", ptr);
+ void* bt[BT_MAX];
+ int bt_len = backtrace(bt, BT_MAX);
+ backtrace_symbols_fd(bt, bt_len, STDERR_FILENO);
+ DEBUG_PRINT("\n\n");
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+ return; // addrsan should catch malloc-unknown and print more info than we have
+ }
+ }
+ if (p) { p->next = it->next; } else { allocation_ll = it->next; }
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+ DO_ASSERT(it->ptr == ptr);
+ __real_free(it);
+}
+static void FREE(void* ptr) {
+ if ((uint64_t)ptr < 1024) return; // Rust loves to create pointers to the NULL page for dummys
+ alloc_freed(ptr);
+ __real_free(ptr);
+}
+
+void* __wrap_malloc(size_t len) {
+ void* res = __real_malloc(len);
+ new_allocation(res, "malloc call", len);
+ return res;
+}
+void* __wrap_calloc(size_t nmemb, size_t len) {
+ void* res = __real_calloc(nmemb, len);
+ new_allocation(res, "calloc call", len);
+ return res;
+}
+void __wrap_free(void* ptr) {
+ if (ptr == NULL) return;
+ alloc_freed(ptr);
+ __real_free(ptr);
+}
+
+void* __real_realloc(void* ptr, size_t newlen);
+void* __wrap_realloc(void* ptr, size_t len) {
+ if (ptr != NULL) alloc_freed(ptr);
+ void* res = __real_realloc(ptr, len);
+ new_allocation(res, "realloc call", len);
+ return res;
+}
+void __wrap_reallocarray(void* ptr, size_t new_sz) {
+ // Rust doesn't seem to use reallocarray currently
+ DO_ASSERT(false);
+}
+
+void __attribute__((destructor)) check_leaks() {
+ unsigned long alloc_count = 0;
+ unsigned long alloc_size = 0;
+ DEBUG_PRINT("The following LDK-allocated blocks still remain.\n");
+ DEBUG_PRINT("Note that this is only accurate if System.gc(); System.runFinalization()\n");
+ DEBUG_PRINT("was called prior to exit after all LDK objects were out of scope.\n");
+ for (allocation* a = allocation_ll; a != NULL; a = a->next) {
+ DEBUG_PRINT("%s %p (%lu bytes) remains:\n", a->struct_name, a->ptr, a->alloc_len);
+ backtrace_symbols_fd(a->bt, a->bt_len, STDERR_FILENO);
+ DEBUG_PRINT("\n\n");
+ alloc_count++;
+ alloc_size += a->alloc_len;
+ }
+ DEBUG_PRINT("%lu allocations remained for %lu bytes.\n", alloc_count, alloc_size);
+ DEBUG_PRINT("Note that this is only accurate if System.gc(); System.runFinalization()\n");
+ DEBUG_PRINT("was called prior to exit after all LDK objects were out of scope.\n");
+}
static jmethodID ordinal_meth = NULL;
static jmethodID slicedef_meth = NULL;
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1lib_1version_1string(JNIEnv *env, jclass _c) {
- return str_ref_to_java(env, "v0.0.99.1", strlen("v0.0.99.1"));
+ return str_ref_to_java(env, "v0.0.99.1-7-gf7a4eb8-dirty", strlen("v0.0.99.1-7-gf7a4eb8-dirty"));
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1ldk_1c_1bindings_1version(JNIEnv *env, jclass _c) {
return str_ref_to_java(env, check_get_ldk_bindings_version(), strlen(check_get_ldk_bindings_version()));
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKBaseSign_JCalls_clone(const void* this_arg) {
- LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
- atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
-}
static inline LDKBaseSign LDKBaseSign_init (JNIEnv *env, jclass clz, jobject o, int64_t pubkeys) {
jclass c = (*env)->GetObjectClass(env, o);
CHECK(c != NULL);
}
return ret_ref;
}
-static void* LDKSign_JCalls_clone(const void* this_arg) {
- LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
+static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
+ LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKSign LDKSign_init (JNIEnv *env, jclass clz, jobject o, jobject BaseSign, int64_t pubkeys) {
jclass c = (*env)->GetObjectClass(env, o);
LDKSign ret = {
.this_arg = (void*) calls,
.write = write_LDKSign_jcall,
- .clone = LDKSign_JCalls_clone,
+ .cloned = LDKSign_JCalls_cloned,
.free = LDKSign_JCalls_free,
.BaseSign = LDKBaseSign_init(env, clz, BaseSign, pubkeys),
};
*res_ptr = LDKSign_init(env, clz, o, BaseSign, pubkeys);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKSign_1get_1BaseSign(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKSign *inp = (LDKSign *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->BaseSign;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Sign_1write(JNIEnv *env, jclass clz, int64_t this_arg) {
LDKSign* this_arg_conv = (LDKSign*)(((uint64_t)this_arg) & ~1);
LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
return err_ref;
}
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) {
+ return ((LDKCResult_PaymentHashPaymentSendFailureZ*)arg)->result_ok;
+}
+JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKCResult_PaymentHashPaymentSendFailureZ *val = (LDKCResult_PaymentHashPaymentSendFailureZ*)(arg & ~1);
+ CHECK(val->result_ok);
+ int8_tArray res_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, res_arr, 0, 32, (*val->contents.result).data);
+ return res_arr;
+}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKCResult_PaymentHashPaymentSendFailureZ *val = (LDKCResult_PaymentHashPaymentSendFailureZ*)(arg & ~1);
+ CHECK(!val->result_ok);
+ uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
+ return err_ref;
+}
static jclass LDKNetAddress_IPv4_class = NULL;
static jmethodID LDKNetAddress_IPv4_meth = NULL;
static jclass LDKNetAddress_IPv6_class = NULL;
}
return ret_constr;
}
-static void* LDKWatch_JCalls_clone(const void* this_arg) {
- LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
+ LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKWatch LDKWatch_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKBroadcasterInterface_JCalls_clone(const void* this_arg) {
- LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
+ LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKKeysInterface_JCalls_clone(const void* this_arg) {
- LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
+ LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKKeysInterface LDKKeysInterface_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret;
}
-static void* LDKFeeEstimator_JCalls_clone(const void* this_arg) {
- LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
+ LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKFeeEstimator LDKFeeEstimator_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKLogger_JCalls_clone(const void* this_arg) {
- LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
+ LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKLogger LDKLogger_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret;
}
+static jclass LDKPaymentPurpose_InvoicePayment_class = NULL;
+static jmethodID LDKPaymentPurpose_InvoicePayment_meth = NULL;
+static jclass LDKPaymentPurpose_SpontaneousPayment_class = NULL;
+static jmethodID LDKPaymentPurpose_SpontaneousPayment_meth = NULL;
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKPaymentPurpose_init (JNIEnv *env, jclass clz) {
+ LDKPaymentPurpose_InvoicePayment_class =
+ (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKPaymentPurpose$InvoicePayment;"));
+ CHECK(LDKPaymentPurpose_InvoicePayment_class != NULL);
+ LDKPaymentPurpose_InvoicePayment_meth = (*env)->GetMethodID(env, LDKPaymentPurpose_InvoicePayment_class, "<init>", "([B[BJ)V");
+ CHECK(LDKPaymentPurpose_InvoicePayment_meth != NULL);
+ LDKPaymentPurpose_SpontaneousPayment_class =
+ (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKPaymentPurpose$SpontaneousPayment;"));
+ CHECK(LDKPaymentPurpose_SpontaneousPayment_class != NULL);
+ LDKPaymentPurpose_SpontaneousPayment_meth = (*env)->GetMethodID(env, LDKPaymentPurpose_SpontaneousPayment_class, "<init>", "([B)V");
+ CHECK(LDKPaymentPurpose_SpontaneousPayment_meth != NULL);
+}
+JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKPaymentPurpose_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) {
+ LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
+ switch(obj->tag) {
+ case LDKPaymentPurpose_InvoicePayment: {
+ int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, payment_preimage_arr, 0, 32, obj->invoice_payment.payment_preimage.data);
+ int8_tArray payment_secret_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, payment_secret_arr, 0, 32, obj->invoice_payment.payment_secret.data);
+ return (*env)->NewObject(env, LDKPaymentPurpose_InvoicePayment_class, LDKPaymentPurpose_InvoicePayment_meth, payment_preimage_arr, payment_secret_arr, obj->invoice_payment.user_payment_id);
+ }
+ case LDKPaymentPurpose_SpontaneousPayment: {
+ int8_tArray spontaneous_payment_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, spontaneous_payment_arr, 0, 32, obj->spontaneous_payment.data);
+ return (*env)->NewObject(env, LDKPaymentPurpose_SpontaneousPayment_class, LDKPaymentPurpose_SpontaneousPayment_meth, spontaneous_payment_arr);
+ }
+ default: abort();
+ }
+}
static jclass LDKEvent_FundingGenerationReady_class = NULL;
static jmethodID LDKEvent_FundingGenerationReady_meth = NULL;
static jclass LDKEvent_PaymentReceived_class = NULL;
LDKEvent_PaymentReceived_class =
(*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKEvent$PaymentReceived;"));
CHECK(LDKEvent_PaymentReceived_class != NULL);
- LDKEvent_PaymentReceived_meth = (*env)->GetMethodID(env, LDKEvent_PaymentReceived_class, "<init>", "([B[B[BJJ)V");
+ LDKEvent_PaymentReceived_meth = (*env)->GetMethodID(env, LDKEvent_PaymentReceived_class, "<init>", "([BJJ)V");
CHECK(LDKEvent_PaymentReceived_meth != NULL);
LDKEvent_PaymentSent_class =
(*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKEvent$PaymentSent;"));
case LDKEvent_PaymentReceived: {
int8_tArray payment_hash_arr = (*env)->NewByteArray(env, 32);
(*env)->SetByteArrayRegion(env, payment_hash_arr, 0, 32, obj->payment_received.payment_hash.data);
- int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
- (*env)->SetByteArrayRegion(env, payment_preimage_arr, 0, 32, obj->payment_received.payment_preimage.data);
- int8_tArray payment_secret_arr = (*env)->NewByteArray(env, 32);
- (*env)->SetByteArrayRegion(env, payment_secret_arr, 0, 32, obj->payment_received.payment_secret.data);
- return (*env)->NewObject(env, LDKEvent_PaymentReceived_class, LDKEvent_PaymentReceived_meth, payment_hash_arr, payment_preimage_arr, payment_secret_arr, obj->payment_received.amt, obj->payment_received.user_payment_id);
+ uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
+ return (*env)->NewObject(env, LDKEvent_PaymentReceived_class, LDKEvent_PaymentReceived_meth, payment_hash_arr, obj->payment_received.amt, purpose_ref);
}
case LDKEvent_PaymentSent: {
int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
}
return ret_constr;
}
-static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) {
- LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
+ LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKEventHandler_JCalls_clone(const void* this_arg) {
- LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
+ LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKEventHandler LDKEventHandler_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKEventsProvider_JCalls_clone(const void* this_arg) {
- LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
+static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
+ LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKEventsProvider LDKEventsProvider_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
LDKEventHandler handler_conv = *(LDKEventHandler*)(((uint64_t)handler) & ~1);
if (handler_conv.free == LDKEventHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKEventHandler_JCalls_clone(handler_conv.this_arg);
+ LDKEventHandler_JCalls_cloned(&handler_conv);
}
(this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_conv);
}
}
return ret_conv;
}
-static void* LDKAccess_JCalls_clone(const void* this_arg) {
- LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg;
+static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
+ LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKAccess LDKAccess_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKListen_JCalls_clone(const void* this_arg) {
- LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
+ LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKListen LDKListen_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_constr;
}
-static void* LDKConfirm_JCalls_clone(const void* this_arg) {
- LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
+ LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKConfirm LDKConfirm_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKFilter_JCalls_clone(const void* this_arg) {
- LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
+static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
+ LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKFilter LDKFilter_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKPersist_JCalls_clone(const void* this_arg) {
- LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
+ LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKPersist LDKPersist_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) {
- LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
+ LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) {
jclass c = (*env)->GetObjectClass(env, o);
*res_ptr = LDKChannelMessageHandler_init(env, clz, o, MessageSendEventsProvider);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1get_1MessageSendEventsProvider(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKChannelMessageHandler *inp = (LDKChannelMessageHandler *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->MessageSendEventsProvider;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) {
LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)(((uint64_t)this_arg) & ~1);
LDKPublicKey their_node_id_ref;
}
return ret_conv;
}
-static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) {
- LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
+ LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) {
jclass c = (*env)->GetObjectClass(env, o);
*res_ptr = LDKRoutingMessageHandler_init(env, clz, o, MessageSendEventsProvider);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1get_1MessageSendEventsProvider(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKRoutingMessageHandler *inp = (LDKRoutingMessageHandler *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->MessageSendEventsProvider;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) {
LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)(((uint64_t)this_arg) & ~1);
LDKNodeAnnouncement msg_conv;
}
return ret;
}
-static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) {
- LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
+ LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKSocketDescriptor LDKSocketDescriptor_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
.disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
.eq = eq_LDKSocketDescriptor_jcall,
.hash = hash_LDKSocketDescriptor_jcall,
- .clone = LDKSocketDescriptor_JCalls_clone,
+ .cloned = LDKSocketDescriptor_JCalls_cloned,
.free = LDKSocketDescriptor_JCalls_free,
};
return ret;
}
return ret_conv;
}
-static void* LDKChannelManagerPersister_JCalls_clone(const void* this_arg) {
- LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
+static void LDKChannelManagerPersister_JCalls_cloned(LDKChannelManagerPersister* new_obj) {
+ LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKChannelManagerPersister LDKChannelManagerPersister_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings__1ldk_1get_1compiled_1version(JNIEnv *env, jclass clz) {
LDKStr ret_str = _ldk_get_compiled_version();
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings__1ldk_1c_1bindings_1get_1compiled_1version(JNIEnv *env, jclass clz) {
LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSign o_conv = *(LDKSign*)(((uint64_t)o) & ~1);
if (o_conv.free == LDKSign_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSign_JCalls_clone(o_conv.this_arg);
+ LDKSign_JCalls_cloned(&o_conv);
}
LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
*ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
return (uint64_t)ret_conv;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) {
+ LDKThirtyTwoBytes o_ref;
+ CHECK((*env)->GetArrayLength(env, o) == 32);
+ (*env)->GetByteArrayRegion(env, o, 0, 32, o_ref.data);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_ok(o_ref);
+ return (uint64_t)ret_conv;
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1err(JNIEnv *env, jclass clz, int64_t e) {
+ LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(((uint64_t)e) & ~1);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_err(e_conv);
+ return (uint64_t)ret_conv;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1free(JNIEnv *env, jclass clz, int64_t _res) {
+ if ((_res & 1) != 0) return;
+ LDKCResult_PaymentHashPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentHashPaymentSendFailureZ*)(((uint64_t)_res) & ~1);
+ FREE((void*)_res);
+ CResult_PaymentHashPaymentSendFailureZ_free(_res_conv);
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+ LDKCResult_PaymentHashPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentHashPaymentSendFailureZ*)(orig & ~1);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_clone(orig_conv);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) {
LDKCVec_NetAddressZ _res_constr;
_res_constr.datalen = (*env)->GetArrayLength(env, _res);
return (uint64_t)ret_conv;
}
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1free(JNIEnv *env, jclass clz, int64_t this_ptr) {
+ if ((this_ptr & 1) != 0) return;
+ LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(((uint64_t)this_ptr) & ~1);
+ FREE((void*)this_ptr);
+ PaymentPurpose_free(this_ptr_conv);
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+ LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
+ LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+ *ret_copy = PaymentPurpose_clone(orig_conv);
+ uint64_t ret_ref = (uint64_t)ret_copy;
+ return ret_ref;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Event_1free(JNIEnv *env, jclass clz, int64_t this_ptr) {
if ((this_ptr & 1) != 0) return;
LDKEvent this_ptr_conv = *(LDKEvent*)(((uint64_t)this_ptr) & ~1);
chain_source_conv = *(LDKFilter*)(((uint64_t)chain_source) & ~1);
if (chain_source_conv.free == LDKFilter_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFilter_JCalls_clone(chain_source_conv.this_arg);
+ LDKFilter_JCalls_cloned(&chain_source_conv);
}
chain_source_conv_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter");
*chain_source_conv_ptr = chain_source_conv;
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(((uint64_t)feeest) & ~1);
if (feeest_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(feeest_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&feeest_conv);
}
LDKPersist persister_conv = *(LDKPersist*)(((uint64_t)persister) & ~1);
if (persister_conv.free == LDKPersist_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKPersist_JCalls_clone(persister_conv.this_arg);
+ LDKPersist_JCalls_cloned(&persister_conv);
}
LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv_ptr, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
}
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
}
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(((uint64_t)fee_est) & ~1);
if (fee_est_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_est_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_est_conv);
}
LDKWatch chain_monitor_conv = *(LDKWatch*)(((uint64_t)chain_monitor) & ~1);
if (chain_monitor_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(chain_monitor_conv.this_arg);
+ LDKWatch_JCalls_cloned(&chain_monitor_conv);
}
LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)tx_broadcaster) & ~1);
if (tx_broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(tx_broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&tx_broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKUserConfig config_conv;
config_conv.inner = (void*)(config & (~1));
return (uint64_t)ret_conv;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1spontaneous_1payment(JNIEnv *env, jclass clz, int64_t this_arg, int64_t route, int8_tArray payment_preimage) {
+ LDKChannelManager this_arg_conv;
+ this_arg_conv.inner = (void*)(this_arg & (~1));
+ this_arg_conv.is_owned = false;
+ LDKRoute route_conv;
+ route_conv.inner = (void*)(route & (~1));
+ route_conv.is_owned = false;
+ LDKThirtyTwoBytes payment_preimage_ref;
+ CHECK((*env)->GetArrayLength(env, payment_preimage) == 32);
+ (*env)->GetByteArrayRegion(env, payment_preimage, 0, 32, payment_preimage_ref.data);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelManager_1funding_1transaction_1generated(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
LDKChannelManager this_arg_conv;
this_arg_conv.inner = (void*)(this_arg & (~1));
LDKKeysInterface val_conv = *(LDKKeysInterface*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(val_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
}
LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(val_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
}
LDKWatch val_conv = *(LDKWatch*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(val_conv.this_arg);
+ LDKWatch_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
}
LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(val_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
}
LDKLogger val_conv = *(LDKLogger*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(val_conv.this_arg);
+ LDKLogger_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKWatch chain_monitor_conv = *(LDKWatch*)(((uint64_t)chain_monitor) & ~1);
if (chain_monitor_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(chain_monitor_conv.this_arg);
+ LDKWatch_JCalls_cloned(&chain_monitor_conv);
}
LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)tx_broadcaster) & ~1);
if (tx_broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(tx_broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&tx_broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKUserConfig default_config_conv;
default_config_conv.inner = (void*)(default_config & (~1));
this_ptr_conv.is_owned = false;
LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
this_ptr_conv.is_owned = false;
LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKChannelMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelMessageHandler_JCalls_clone(val_conv.this_arg);
+ LDKChannelMessageHandler_JCalls_cloned(&val_conv);
}
MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
}
LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKRoutingMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKRoutingMessageHandler_JCalls_clone(val_conv.this_arg);
+ LDKRoutingMessageHandler_JCalls_cloned(&val_conv);
}
MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
}
LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(((uint64_t)chan_handler_arg) & ~1);
if (chan_handler_arg_conv.free == LDKChannelMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelMessageHandler_JCalls_clone(chan_handler_arg_conv.this_arg);
+ LDKChannelMessageHandler_JCalls_cloned(&chan_handler_arg_conv);
}
LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(((uint64_t)route_handler_arg) & ~1);
if (route_handler_arg_conv.free == LDKRoutingMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKRoutingMessageHandler_JCalls_clone(route_handler_arg_conv.this_arg);
+ LDKRoutingMessageHandler_JCalls_cloned(&route_handler_arg_conv);
}
LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(((uint64_t)descriptor) & ~1);
if (descriptor_conv.free == LDKSocketDescriptor_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSocketDescriptor_JCalls_clone(descriptor_conv.this_arg);
+ LDKSocketDescriptor_JCalls_cloned(&descriptor_conv);
}
LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
*ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(((uint64_t)descriptor) & ~1);
if (descriptor_conv.free == LDKSocketDescriptor_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSocketDescriptor_JCalls_clone(descriptor_conv.this_arg);
+ LDKSocketDescriptor_JCalls_cloned(&descriptor_conv);
}
LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
*ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
return ret_ref;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1keysend_1route(JNIEnv *env, jclass clz, int8_tArray our_node_id, int64_t network, int8_tArray payee, int64_tArray first_hops, int64_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, int64_t logger) {
+ LDKPublicKey our_node_id_ref;
+ CHECK((*env)->GetArrayLength(env, our_node_id) == 33);
+ (*env)->GetByteArrayRegion(env, our_node_id, 0, 33, our_node_id_ref.compressed_form);
+ LDKNetworkGraph network_conv;
+ network_conv.inner = (void*)(network & (~1));
+ network_conv.is_owned = false;
+ LDKPublicKey payee_ref;
+ CHECK((*env)->GetArrayLength(env, payee) == 33);
+ (*env)->GetByteArrayRegion(env, payee, 0, 33, payee_ref.compressed_form);
+ LDKCVec_ChannelDetailsZ first_hops_constr;
+ first_hops_constr.datalen = (*env)->GetArrayLength(env, first_hops);
+ if (first_hops_constr.datalen > 0)
+ first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+ else
+ first_hops_constr.data = NULL;
+ int64_t* first_hops_vals = (*env)->GetLongArrayElements (env, first_hops, NULL);
+ for (size_t q = 0; q < first_hops_constr.datalen; q++) {
+ int64_t first_hops_conv_16 = first_hops_vals[q];
+ LDKChannelDetails first_hops_conv_16_conv;
+ first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
+ first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
+ first_hops_constr.data[q] = first_hops_conv_16_conv;
+ }
+ (*env)->ReleaseLongArrayElements(env, first_hops, first_hops_vals, 0);
+ LDKCVec_RouteHintZ last_hops_constr;
+ last_hops_constr.datalen = (*env)->GetArrayLength(env, last_hops);
+ if (last_hops_constr.datalen > 0)
+ last_hops_constr.data = MALLOC(last_hops_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+ else
+ last_hops_constr.data = NULL;
+ int64_t* last_hops_vals = (*env)->GetLongArrayElements (env, last_hops, NULL);
+ for (size_t l = 0; l < last_hops_constr.datalen; l++) {
+ int64_t last_hops_conv_11 = last_hops_vals[l];
+ LDKRouteHint last_hops_conv_11_conv;
+ last_hops_conv_11_conv.inner = (void*)(last_hops_conv_11 & (~1));
+ last_hops_conv_11_conv.is_owned = (last_hops_conv_11 & 1) || (last_hops_conv_11 == 0);
+ last_hops_conv_11_conv = RouteHint_clone(&last_hops_conv_11_conv);
+ last_hops_constr.data[l] = last_hops_conv_11_conv;
+ }
+ (*env)->ReleaseLongArrayElements(env, last_hops, last_hops_vals, 0);
+ LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
+ if (logger_conv.free == LDKLogger_JCalls_free) {
+ // If this_arg is a JCalls struct, then we need to increment the refcnt in it.
+ LDKLogger_JCalls_cloned(&logger_conv);
+ }
+ LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+ *ret_conv = get_keysend_route(our_node_id_ref, &network_conv, payee_ref, &first_hops_constr, last_hops_constr, final_value_msat, final_cltv, logger_conv);
+ FREE(first_hops_constr.data);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1route(JNIEnv *env, jclass clz, int8_tArray our_node_id, int64_t network, int8_tArray payee, int64_t payee_features, int64_tArray first_hops, int64_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, int64_t logger) {
LDKPublicKey our_node_id_ref;
CHECK((*env)->GetArrayLength(env, our_node_id) == 33);
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
*ret_conv = get_route(our_node_id_ref, &network_conv, payee_ref, payee_features_conv, &first_hops_constr, last_hops_constr, final_value_msat, final_cltv, logger_conv);
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(genesis_hash_ref, chain_access_conv_ptr, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKNetworkGraph network_graph_conv;
network_graph_conv.inner = (void*)(network_graph & (~1));
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
this_arg_conv.is_owned = false;
LDKStr ret_str = FilesystemPersister_get_data_dir(&this_arg_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
*ret_conv = FilesystemPersister_read_channelmonitors(&this_arg_conv, keys_manager_conv);
LDKChannelManagerPersister persister_conv = *(LDKChannelManagerPersister*)(((uint64_t)persister) & ~1);
if (persister_conv.free == LDKChannelManagerPersister_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelManagerPersister_JCalls_clone(persister_conv.this_arg);
+ LDKChannelManagerPersister_JCalls_cloned(&persister_conv);
}
LDKEventHandler event_handler_conv = *(LDKEventHandler*)(((uint64_t)event_handler) & ~1);
if (event_handler_conv.free == LDKEventHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKEventHandler_JCalls_clone(event_handler_conv.this_arg);
+ LDKEventHandler_JCalls_cloned(&event_handler_conv);
}
LDKChainMonitor chain_monitor_conv;
chain_monitor_conv.inner = (void*)(chain_monitor & (~1));
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKBackgroundProcessor ret_var = BackgroundProcessor_start(persister_conv, event_handler_conv, &chain_monitor_conv, &channel_manager_conv, &peer_manager_conv, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
this_arg_conv = Description_clone(&this_arg_conv);
LDKStr ret_str = Description_into_inner(this_arg_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKCreationError* o_conv = (LDKCreationError*)(o & ~1);
LDKStr ret_str = CreationError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSemanticError* o_conv = (LDKSemanticError*)(o & ~1);
LDKStr ret_str = SemanticError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSignOrCreationError* o_conv = (LDKSignOrCreationError*)o;
LDKStr ret_str = SignOrCreationError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKCurrency network_conv = LDKCurrency_from_java(env, network);
LDKCOption_u64Z amt_msat_conv = *(LDKCOption_u64Z*)(((uint64_t)amt_msat) & ~1);
o_conv.is_owned = false;
LDKStr ret_str = Invoice_to_str(&o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
o_conv.is_owned = false;
LDKStr ret_str = SignedRawInvoice_to_str(&o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
LDKStr ret_str = Currency_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSiPrefix* o_conv = (LDKSiPrefix*)(o & ~1);
LDKStr ret_str = SiPrefix_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
#include <stdlib.h>
#define DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__)
-#define MALLOC(a, _) malloc(a)
-#define FREE(p) if ((uint64_t)(p) > 1024) { free(p); }
-#define DO_ASSERT(a) (void)(a)
-#define CHECK(a)
+#include <assert.h>
+// Always run a, then assert it is true:
+#define DO_ASSERT(a) do { bool _assert_val = (a); assert(_assert_val); } while(0)
+// Assert a is true or do nothing
+#define CHECK(a) DO_ASSERT(a)
+
+void __attribute__((constructor)) debug_log_version() {
+ if (check_get_ldk_version() == NULL)
+ DEBUG_PRINT("LDK version did not match the header we built against\n");
+ if (check_get_ldk_bindings_version() == NULL)
+ DEBUG_PRINT("LDK C Bindings version did not match the header we built against\n");
+ DEBUG_PRINT("Loaded LDK-Java Bindings with LDK %s and LDK-C-Bindings %s\n", check_get_ldk_version(), check_get_ldk_bindings_version());
+}
+
+// Running a leak check across all the allocations and frees of the JDK is a mess,
+// so instead we implement our own naive leak checker here, relying on the -wrap
+// linker option to wrap malloc/calloc/realloc/free, tracking everyhing allocated
+// and free'd in Rust or C across the generated bindings shared library.
+#include <threads.h>
+#include <execinfo.h>
+
+#include <unistd.h>
+static mtx_t allocation_mtx;
+
+void __attribute__((constructor)) init_mtx() {
+ DO_ASSERT(mtx_init(&allocation_mtx, mtx_plain) == thrd_success);
+}
+
+#define BT_MAX 128
+typedef struct allocation {
+ struct allocation* next;
+ void* ptr;
+ const char* struct_name;
+ void* bt[BT_MAX];
+ int bt_len;
+ unsigned long alloc_len;
+} allocation;
+static allocation* allocation_ll = NULL;
+
+void* __real_malloc(size_t len);
+void* __real_calloc(size_t nmemb, size_t len);
+static void new_allocation(void* res, const char* struct_name, size_t len) {
+ allocation* new_alloc = __real_malloc(sizeof(allocation));
+ new_alloc->ptr = res;
+ new_alloc->struct_name = struct_name;
+ new_alloc->bt_len = backtrace(new_alloc->bt, BT_MAX);
+ new_alloc->alloc_len = len;
+ DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success);
+ new_alloc->next = allocation_ll;
+ allocation_ll = new_alloc;
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+}
+static void* MALLOC(size_t len, const char* struct_name) {
+ void* res = __real_malloc(len);
+ new_allocation(res, struct_name, len);
+ return res;
+}
+void __real_free(void* ptr);
+static void alloc_freed(void* ptr) {
+ allocation* p = NULL;
+ DO_ASSERT(mtx_lock(&allocation_mtx) == thrd_success);
+ allocation* it = allocation_ll;
+ while (it->ptr != ptr) {
+ p = it; it = it->next;
+ if (it == NULL) {
+ DEBUG_PRINT("Tried to free unknown pointer %p at:\n", ptr);
+ void* bt[BT_MAX];
+ int bt_len = backtrace(bt, BT_MAX);
+ backtrace_symbols_fd(bt, bt_len, STDERR_FILENO);
+ DEBUG_PRINT("\n\n");
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+ return; // addrsan should catch malloc-unknown and print more info than we have
+ }
+ }
+ if (p) { p->next = it->next; } else { allocation_ll = it->next; }
+ DO_ASSERT(mtx_unlock(&allocation_mtx) == thrd_success);
+ DO_ASSERT(it->ptr == ptr);
+ __real_free(it);
+}
+static void FREE(void* ptr) {
+ if ((uint64_t)ptr < 1024) return; // Rust loves to create pointers to the NULL page for dummys
+ alloc_freed(ptr);
+ __real_free(ptr);
+}
+
+void* __wrap_malloc(size_t len) {
+ void* res = __real_malloc(len);
+ new_allocation(res, "malloc call", len);
+ return res;
+}
+void* __wrap_calloc(size_t nmemb, size_t len) {
+ void* res = __real_calloc(nmemb, len);
+ new_allocation(res, "calloc call", len);
+ return res;
+}
+void __wrap_free(void* ptr) {
+ if (ptr == NULL) return;
+ alloc_freed(ptr);
+ __real_free(ptr);
+}
+
+void* __real_realloc(void* ptr, size_t newlen);
+void* __wrap_realloc(void* ptr, size_t len) {
+ if (ptr != NULL) alloc_freed(ptr);
+ void* res = __real_realloc(ptr, len);
+ new_allocation(res, "realloc call", len);
+ return res;
+}
+void __wrap_reallocarray(void* ptr, size_t new_sz) {
+ // Rust doesn't seem to use reallocarray currently
+ DO_ASSERT(false);
+}
+
+void __attribute__((destructor)) check_leaks() {
+ unsigned long alloc_count = 0;
+ unsigned long alloc_size = 0;
+ DEBUG_PRINT("The following LDK-allocated blocks still remain.\n");
+ DEBUG_PRINT("Note that this is only accurate if System.gc(); System.runFinalization()\n");
+ DEBUG_PRINT("was called prior to exit after all LDK objects were out of scope.\n");
+ for (allocation* a = allocation_ll; a != NULL; a = a->next) {
+ DEBUG_PRINT("%s %p (%lu bytes) remains:\n", a->struct_name, a->ptr, a->alloc_len);
+ backtrace_symbols_fd(a->bt, a->bt_len, STDERR_FILENO);
+ DEBUG_PRINT("\n\n");
+ alloc_count++;
+ alloc_size += a->alloc_len;
+ }
+ DEBUG_PRINT("%lu allocations remained for %lu bytes.\n", alloc_count, alloc_size);
+ DEBUG_PRINT("Note that this is only accurate if System.gc(); System.runFinalization()\n");
+ DEBUG_PRINT("was called prior to exit after all LDK objects were out of scope.\n");
+}
static jmethodID ordinal_meth = NULL;
static jmethodID slicedef_meth = NULL;
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1lib_1version_1string(JNIEnv *env, jclass _c) {
- return str_ref_to_java(env, "v0.0.99.1", strlen("v0.0.99.1"));
+ return str_ref_to_java(env, "v0.0.99.1-7-gf7a4eb8-dirty", strlen("v0.0.99.1-7-gf7a4eb8-dirty"));
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings_get_1ldk_1c_1bindings_1version(JNIEnv *env, jclass _c) {
return str_ref_to_java(env, check_get_ldk_bindings_version(), strlen(check_get_ldk_bindings_version()));
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKBaseSign_JCalls_clone(const void* this_arg) {
- LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg;
- atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
-}
static inline LDKBaseSign LDKBaseSign_init (JNIEnv *env, jclass clz, jobject o, int64_t pubkeys) {
jclass c = (*env)->GetObjectClass(env, o);
CHECK(c != NULL);
}
return ret_ref;
}
-static void* LDKSign_JCalls_clone(const void* this_arg) {
- LDKSign_JCalls *j_calls = (LDKSign_JCalls*) this_arg;
+static void LDKSign_JCalls_cloned(LDKSign* new_obj) {
+ LDKSign_JCalls *j_calls = (LDKSign_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->BaseSign->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKSign LDKSign_init (JNIEnv *env, jclass clz, jobject o, jobject BaseSign, int64_t pubkeys) {
jclass c = (*env)->GetObjectClass(env, o);
LDKSign ret = {
.this_arg = (void*) calls,
.write = write_LDKSign_jcall,
- .clone = LDKSign_JCalls_clone,
+ .cloned = LDKSign_JCalls_cloned,
.free = LDKSign_JCalls_free,
.BaseSign = LDKBaseSign_init(env, clz, BaseSign, pubkeys),
};
*res_ptr = LDKSign_init(env, clz, o, BaseSign, pubkeys);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKSign_1get_1BaseSign(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKSign *inp = (LDKSign *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->BaseSign;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_Sign_1write(JNIEnv *env, jclass clz, int64_t this_arg) {
LDKSign* this_arg_conv = (LDKSign*)(((uint64_t)this_arg) & ~1);
LDKCVec_u8Z ret_var = (this_arg_conv->write)(this_arg_conv->this_arg);
uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
return err_ref;
}
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1result_1ok(JNIEnv *env, jclass clz, int64_t arg) {
+ return ((LDKCResult_PaymentHashPaymentSendFailureZ*)arg)->result_ok;
+}
+JNIEXPORT int8_tArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1ok(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKCResult_PaymentHashPaymentSendFailureZ *val = (LDKCResult_PaymentHashPaymentSendFailureZ*)(arg & ~1);
+ CHECK(val->result_ok);
+ int8_tArray res_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, res_arr, 0, 32, (*val->contents.result).data);
+ return res_arr;
+}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1err(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKCResult_PaymentHashPaymentSendFailureZ *val = (LDKCResult_PaymentHashPaymentSendFailureZ*)(arg & ~1);
+ CHECK(!val->result_ok);
+ uint64_t err_ref = ((uint64_t)&(*val->contents.err)) | 1;
+ return err_ref;
+}
static jclass LDKNetAddress_IPv4_class = NULL;
static jmethodID LDKNetAddress_IPv4_meth = NULL;
static jclass LDKNetAddress_IPv6_class = NULL;
}
return ret_constr;
}
-static void* LDKWatch_JCalls_clone(const void* this_arg) {
- LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) this_arg;
+static void LDKWatch_JCalls_cloned(LDKWatch* new_obj) {
+ LDKWatch_JCalls *j_calls = (LDKWatch_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKWatch LDKWatch_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKBroadcasterInterface_JCalls_clone(const void* this_arg) {
- LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) this_arg;
+static void LDKBroadcasterInterface_JCalls_cloned(LDKBroadcasterInterface* new_obj) {
+ LDKBroadcasterInterface_JCalls *j_calls = (LDKBroadcasterInterface_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKBroadcasterInterface LDKBroadcasterInterface_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKKeysInterface_JCalls_clone(const void* this_arg) {
- LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) this_arg;
+static void LDKKeysInterface_JCalls_cloned(LDKKeysInterface* new_obj) {
+ LDKKeysInterface_JCalls *j_calls = (LDKKeysInterface_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKKeysInterface LDKKeysInterface_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret;
}
-static void* LDKFeeEstimator_JCalls_clone(const void* this_arg) {
- LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) this_arg;
+static void LDKFeeEstimator_JCalls_cloned(LDKFeeEstimator* new_obj) {
+ LDKFeeEstimator_JCalls *j_calls = (LDKFeeEstimator_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKFeeEstimator LDKFeeEstimator_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKLogger_JCalls_clone(const void* this_arg) {
- LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg;
+static void LDKLogger_JCalls_cloned(LDKLogger* new_obj) {
+ LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKLogger LDKLogger_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret;
}
+static jclass LDKPaymentPurpose_InvoicePayment_class = NULL;
+static jmethodID LDKPaymentPurpose_InvoicePayment_meth = NULL;
+static jclass LDKPaymentPurpose_SpontaneousPayment_class = NULL;
+static jmethodID LDKPaymentPurpose_SpontaneousPayment_meth = NULL;
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKPaymentPurpose_init (JNIEnv *env, jclass clz) {
+ LDKPaymentPurpose_InvoicePayment_class =
+ (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKPaymentPurpose$InvoicePayment;"));
+ CHECK(LDKPaymentPurpose_InvoicePayment_class != NULL);
+ LDKPaymentPurpose_InvoicePayment_meth = (*env)->GetMethodID(env, LDKPaymentPurpose_InvoicePayment_class, "<init>", "([B[BJ)V");
+ CHECK(LDKPaymentPurpose_InvoicePayment_meth != NULL);
+ LDKPaymentPurpose_SpontaneousPayment_class =
+ (*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKPaymentPurpose$SpontaneousPayment;"));
+ CHECK(LDKPaymentPurpose_SpontaneousPayment_class != NULL);
+ LDKPaymentPurpose_SpontaneousPayment_meth = (*env)->GetMethodID(env, LDKPaymentPurpose_SpontaneousPayment_class, "<init>", "([B)V");
+ CHECK(LDKPaymentPurpose_SpontaneousPayment_meth != NULL);
+}
+JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKPaymentPurpose_1ref_1from_1ptr(JNIEnv *env, jclass clz, int64_t ptr) {
+ LDKPaymentPurpose *obj = (LDKPaymentPurpose*)(ptr & ~1);
+ switch(obj->tag) {
+ case LDKPaymentPurpose_InvoicePayment: {
+ int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, payment_preimage_arr, 0, 32, obj->invoice_payment.payment_preimage.data);
+ int8_tArray payment_secret_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, payment_secret_arr, 0, 32, obj->invoice_payment.payment_secret.data);
+ return (*env)->NewObject(env, LDKPaymentPurpose_InvoicePayment_class, LDKPaymentPurpose_InvoicePayment_meth, payment_preimage_arr, payment_secret_arr, obj->invoice_payment.user_payment_id);
+ }
+ case LDKPaymentPurpose_SpontaneousPayment: {
+ int8_tArray spontaneous_payment_arr = (*env)->NewByteArray(env, 32);
+ (*env)->SetByteArrayRegion(env, spontaneous_payment_arr, 0, 32, obj->spontaneous_payment.data);
+ return (*env)->NewObject(env, LDKPaymentPurpose_SpontaneousPayment_class, LDKPaymentPurpose_SpontaneousPayment_meth, spontaneous_payment_arr);
+ }
+ default: abort();
+ }
+}
static jclass LDKEvent_FundingGenerationReady_class = NULL;
static jmethodID LDKEvent_FundingGenerationReady_meth = NULL;
static jclass LDKEvent_PaymentReceived_class = NULL;
LDKEvent_PaymentReceived_class =
(*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKEvent$PaymentReceived;"));
CHECK(LDKEvent_PaymentReceived_class != NULL);
- LDKEvent_PaymentReceived_meth = (*env)->GetMethodID(env, LDKEvent_PaymentReceived_class, "<init>", "([B[B[BJJ)V");
+ LDKEvent_PaymentReceived_meth = (*env)->GetMethodID(env, LDKEvent_PaymentReceived_class, "<init>", "([BJJ)V");
CHECK(LDKEvent_PaymentReceived_meth != NULL);
LDKEvent_PaymentSent_class =
(*env)->NewGlobalRef(env, (*env)->FindClass(env, "Lorg/ldk/impl/bindings$LDKEvent$PaymentSent;"));
case LDKEvent_PaymentReceived: {
int8_tArray payment_hash_arr = (*env)->NewByteArray(env, 32);
(*env)->SetByteArrayRegion(env, payment_hash_arr, 0, 32, obj->payment_received.payment_hash.data);
- int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
- (*env)->SetByteArrayRegion(env, payment_preimage_arr, 0, 32, obj->payment_received.payment_preimage.data);
- int8_tArray payment_secret_arr = (*env)->NewByteArray(env, 32);
- (*env)->SetByteArrayRegion(env, payment_secret_arr, 0, 32, obj->payment_received.payment_secret.data);
- return (*env)->NewObject(env, LDKEvent_PaymentReceived_class, LDKEvent_PaymentReceived_meth, payment_hash_arr, payment_preimage_arr, payment_secret_arr, obj->payment_received.amt, obj->payment_received.user_payment_id);
+ uint64_t purpose_ref = ((uint64_t)&obj->payment_received.purpose) | 1;
+ return (*env)->NewObject(env, LDKEvent_PaymentReceived_class, LDKEvent_PaymentReceived_meth, payment_hash_arr, obj->payment_received.amt, purpose_ref);
}
case LDKEvent_PaymentSent: {
int8_tArray payment_preimage_arr = (*env)->NewByteArray(env, 32);
}
return ret_constr;
}
-static void* LDKMessageSendEventsProvider_JCalls_clone(const void* this_arg) {
- LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) this_arg;
+static void LDKMessageSendEventsProvider_JCalls_cloned(LDKMessageSendEventsProvider* new_obj) {
+ LDKMessageSendEventsProvider_JCalls *j_calls = (LDKMessageSendEventsProvider_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKMessageSendEventsProvider LDKMessageSendEventsProvider_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKEventHandler_JCalls_clone(const void* this_arg) {
- LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) this_arg;
+static void LDKEventHandler_JCalls_cloned(LDKEventHandler* new_obj) {
+ LDKEventHandler_JCalls *j_calls = (LDKEventHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKEventHandler LDKEventHandler_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKEventsProvider_JCalls_clone(const void* this_arg) {
- LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) this_arg;
+static void LDKEventsProvider_JCalls_cloned(LDKEventsProvider* new_obj) {
+ LDKEventsProvider_JCalls *j_calls = (LDKEventsProvider_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKEventsProvider LDKEventsProvider_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
LDKEventHandler handler_conv = *(LDKEventHandler*)(((uint64_t)handler) & ~1);
if (handler_conv.free == LDKEventHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKEventHandler_JCalls_clone(handler_conv.this_arg);
+ LDKEventHandler_JCalls_cloned(&handler_conv);
}
(this_arg_conv->process_pending_events)(this_arg_conv->this_arg, handler_conv);
}
}
return ret_conv;
}
-static void* LDKAccess_JCalls_clone(const void* this_arg) {
- LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) this_arg;
+static void LDKAccess_JCalls_cloned(LDKAccess* new_obj) {
+ LDKAccess_JCalls *j_calls = (LDKAccess_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKAccess LDKAccess_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKListen_JCalls_clone(const void* this_arg) {
- LDKListen_JCalls *j_calls = (LDKListen_JCalls*) this_arg;
+static void LDKListen_JCalls_cloned(LDKListen* new_obj) {
+ LDKListen_JCalls *j_calls = (LDKListen_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKListen LDKListen_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_constr;
}
-static void* LDKConfirm_JCalls_clone(const void* this_arg) {
- LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) this_arg;
+static void LDKConfirm_JCalls_cloned(LDKConfirm* new_obj) {
+ LDKConfirm_JCalls *j_calls = (LDKConfirm_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKConfirm LDKConfirm_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKFilter_JCalls_clone(const void* this_arg) {
- LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) this_arg;
+static void LDKFilter_JCalls_cloned(LDKFilter* new_obj) {
+ LDKFilter_JCalls *j_calls = (LDKFilter_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKFilter LDKFilter_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
}
return ret_conv;
}
-static void* LDKPersist_JCalls_clone(const void* this_arg) {
- LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) this_arg;
+static void LDKPersist_JCalls_cloned(LDKPersist* new_obj) {
+ LDKPersist_JCalls *j_calls = (LDKPersist_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKPersist LDKPersist_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
DO_ASSERT((*j_calls->vm)->DetachCurrentThread(j_calls->vm) == JNI_OK);
}
}
-static void* LDKChannelMessageHandler_JCalls_clone(const void* this_arg) {
- LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) this_arg;
+static void LDKChannelMessageHandler_JCalls_cloned(LDKChannelMessageHandler* new_obj) {
+ LDKChannelMessageHandler_JCalls *j_calls = (LDKChannelMessageHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKChannelMessageHandler LDKChannelMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) {
jclass c = (*env)->GetObjectClass(env, o);
*res_ptr = LDKChannelMessageHandler_init(env, clz, o, MessageSendEventsProvider);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1get_1MessageSendEventsProvider(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKChannelMessageHandler *inp = (LDKChannelMessageHandler *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->MessageSendEventsProvider;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_ChannelMessageHandler_1handle_1open_1channel(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray their_node_id, int64_t their_features, int64_t msg) {
LDKChannelMessageHandler* this_arg_conv = (LDKChannelMessageHandler*)(((uint64_t)this_arg) & ~1);
LDKPublicKey their_node_id_ref;
}
return ret_conv;
}
-static void* LDKRoutingMessageHandler_JCalls_clone(const void* this_arg) {
- LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg;
+static void LDKRoutingMessageHandler_JCalls_cloned(LDKRoutingMessageHandler* new_obj) {
+ LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
atomic_fetch_add_explicit(&j_calls->MessageSendEventsProvider->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKRoutingMessageHandler LDKRoutingMessageHandler_init (JNIEnv *env, jclass clz, jobject o, jobject MessageSendEventsProvider) {
jclass c = (*env)->GetObjectClass(env, o);
*res_ptr = LDKRoutingMessageHandler_init(env, clz, o, MessageSendEventsProvider);
return (uint64_t)res_ptr;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1get_1MessageSendEventsProvider(JNIEnv *env, jclass clz, int64_t arg) {
+ LDKRoutingMessageHandler *inp = (LDKRoutingMessageHandler *)(arg & ~1);
+ uint64_t res_ptr = (uint64_t)&inp->MessageSendEventsProvider;
+ DO_ASSERT((res_ptr & 1) == 0);
+ return (int64_t)(res_ptr | 1);
+}
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_RoutingMessageHandler_1handle_1node_1announcement(JNIEnv *env, jclass clz, int64_t this_arg, int64_t msg) {
LDKRoutingMessageHandler* this_arg_conv = (LDKRoutingMessageHandler*)(((uint64_t)this_arg) & ~1);
LDKNodeAnnouncement msg_conv;
}
return ret;
}
-static void* LDKSocketDescriptor_JCalls_clone(const void* this_arg) {
- LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) this_arg;
+static void LDKSocketDescriptor_JCalls_cloned(LDKSocketDescriptor* new_obj) {
+ LDKSocketDescriptor_JCalls *j_calls = (LDKSocketDescriptor_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKSocketDescriptor LDKSocketDescriptor_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
.disconnect_socket = disconnect_socket_LDKSocketDescriptor_jcall,
.eq = eq_LDKSocketDescriptor_jcall,
.hash = hash_LDKSocketDescriptor_jcall,
- .clone = LDKSocketDescriptor_JCalls_clone,
+ .cloned = LDKSocketDescriptor_JCalls_cloned,
.free = LDKSocketDescriptor_JCalls_free,
};
return ret;
}
return ret_conv;
}
-static void* LDKChannelManagerPersister_JCalls_clone(const void* this_arg) {
- LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) this_arg;
+static void LDKChannelManagerPersister_JCalls_cloned(LDKChannelManagerPersister* new_obj) {
+ LDKChannelManagerPersister_JCalls *j_calls = (LDKChannelManagerPersister_JCalls*) new_obj->this_arg;
atomic_fetch_add_explicit(&j_calls->refcnt, 1, memory_order_release);
- return (void*) this_arg;
}
static inline LDKChannelManagerPersister LDKChannelManagerPersister_init (JNIEnv *env, jclass clz, jobject o) {
jclass c = (*env)->GetObjectClass(env, o);
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings__1ldk_1get_1compiled_1version(JNIEnv *env, jclass clz) {
LDKStr ret_str = _ldk_get_compiled_version();
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
JNIEXPORT jstring JNICALL Java_org_ldk_impl_bindings__1ldk_1c_1bindings_1get_1compiled_1version(JNIEnv *env, jclass clz) {
LDKStr ret_str = _ldk_c_bindings_get_compiled_version();
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSign o_conv = *(LDKSign*)(((uint64_t)o) & ~1);
if (o_conv.free == LDKSign_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSign_JCalls_clone(o_conv.this_arg);
+ LDKSign_JCalls_cloned(&o_conv);
}
LDKCResult_SignDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_SignDecodeErrorZ), "LDKCResult_SignDecodeErrorZ");
*ret_conv = CResult_SignDecodeErrorZ_ok(o_conv);
return (uint64_t)ret_conv;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) {
+ LDKThirtyTwoBytes o_ref;
+ CHECK((*env)->GetArrayLength(env, o) == 32);
+ (*env)->GetByteArrayRegion(env, o, 0, 32, o_ref.data);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_ok(o_ref);
+ return (uint64_t)ret_conv;
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1err(JNIEnv *env, jclass clz, int64_t e) {
+ LDKPaymentSendFailure e_conv = *(LDKPaymentSendFailure*)(((uint64_t)e) & ~1);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_err(e_conv);
+ return (uint64_t)ret_conv;
+}
+
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1free(JNIEnv *env, jclass clz, int64_t _res) {
+ if ((_res & 1) != 0) return;
+ LDKCResult_PaymentHashPaymentSendFailureZ _res_conv = *(LDKCResult_PaymentHashPaymentSendFailureZ*)(((uint64_t)_res) & ~1);
+ FREE((void*)_res);
+ CResult_PaymentHashPaymentSendFailureZ_free(_res_conv);
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+ LDKCResult_PaymentHashPaymentSendFailureZ* orig_conv = (LDKCResult_PaymentHashPaymentSendFailureZ*)(orig & ~1);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = CResult_PaymentHashPaymentSendFailureZ_clone(orig_conv);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CVec_1NetAddressZ_1free(JNIEnv *env, jclass clz, int64_tArray _res) {
LDKCVec_NetAddressZ _res_constr;
_res_constr.datalen = (*env)->GetArrayLength(env, _res);
return (uint64_t)ret_conv;
}
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1free(JNIEnv *env, jclass clz, int64_t this_ptr) {
+ if ((this_ptr & 1) != 0) return;
+ LDKPaymentPurpose this_ptr_conv = *(LDKPaymentPurpose*)(((uint64_t)this_ptr) & ~1);
+ FREE((void*)this_ptr);
+ PaymentPurpose_free(this_ptr_conv);
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+ LDKPaymentPurpose* orig_conv = (LDKPaymentPurpose*)orig;
+ LDKPaymentPurpose *ret_copy = MALLOC(sizeof(LDKPaymentPurpose), "LDKPaymentPurpose");
+ *ret_copy = PaymentPurpose_clone(orig_conv);
+ uint64_t ret_ref = (uint64_t)ret_copy;
+ return ret_ref;
+}
+
JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_Event_1free(JNIEnv *env, jclass clz, int64_t this_ptr) {
if ((this_ptr & 1) != 0) return;
LDKEvent this_ptr_conv = *(LDKEvent*)(((uint64_t)this_ptr) & ~1);
chain_source_conv = *(LDKFilter*)(((uint64_t)chain_source) & ~1);
if (chain_source_conv.free == LDKFilter_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFilter_JCalls_clone(chain_source_conv.this_arg);
+ LDKFilter_JCalls_cloned(&chain_source_conv);
}
chain_source_conv_ptr = MALLOC(sizeof(LDKFilter), "LDKFilter");
*chain_source_conv_ptr = chain_source_conv;
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKFeeEstimator feeest_conv = *(LDKFeeEstimator*)(((uint64_t)feeest) & ~1);
if (feeest_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(feeest_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&feeest_conv);
}
LDKPersist persister_conv = *(LDKPersist*)(((uint64_t)persister) & ~1);
if (persister_conv.free == LDKPersist_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKPersist_JCalls_clone(persister_conv.this_arg);
+ LDKPersist_JCalls_cloned(&persister_conv);
}
LDKChainMonitor ret_var = ChainMonitor_new(chain_source_conv_ptr, broadcaster_conv, logger_conv, feeest_conv, persister_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_block_connected(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
ChannelMonitor_block_disconnected(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
}
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_transactions_confirmed(&this_arg_conv, header_ref, txdata_constr, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
ChannelMonitor_transaction_unconfirmed(&this_arg_conv, txid_ref, broadcaster_conv, fee_estimator_conv, logger_conv);
}
LDKBroadcasterInterface broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)broadcaster) & ~1);
if (broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&broadcaster_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ ret_var = ChannelMonitor_best_block_updated(&this_arg_conv, header_ref, height, broadcaster_conv, fee_estimator_conv, logger_conv);
int64_tArray ret_arr = (*env)->NewLongArray(env, ret_var.datalen);
LDKFeeEstimator fee_est_conv = *(LDKFeeEstimator*)(((uint64_t)fee_est) & ~1);
if (fee_est_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_est_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_est_conv);
}
LDKWatch chain_monitor_conv = *(LDKWatch*)(((uint64_t)chain_monitor) & ~1);
if (chain_monitor_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(chain_monitor_conv.this_arg);
+ LDKWatch_JCalls_cloned(&chain_monitor_conv);
}
LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)tx_broadcaster) & ~1);
if (tx_broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(tx_broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&tx_broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKUserConfig config_conv;
config_conv.inner = (void*)(config & (~1));
return (uint64_t)ret_conv;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1spontaneous_1payment(JNIEnv *env, jclass clz, int64_t this_arg, int64_t route, int8_tArray payment_preimage) {
+ LDKChannelManager this_arg_conv;
+ this_arg_conv.inner = (void*)(this_arg & (~1));
+ this_arg_conv.is_owned = false;
+ LDKRoute route_conv;
+ route_conv.inner = (void*)(route & (~1));
+ route_conv.is_owned = false;
+ LDKThirtyTwoBytes payment_preimage_ref;
+ CHECK((*env)->GetArrayLength(env, payment_preimage) == 32);
+ (*env)->GetByteArrayRegion(env, payment_preimage, 0, 32, payment_preimage_ref.data);
+ LDKCResult_PaymentHashPaymentSendFailureZ* ret_conv = MALLOC(sizeof(LDKCResult_PaymentHashPaymentSendFailureZ), "LDKCResult_PaymentHashPaymentSendFailureZ");
+ *ret_conv = ChannelManager_send_spontaneous_payment(&this_arg_conv, &route_conv, payment_preimage_ref);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_ChannelManager_1funding_1transaction_1generated(JNIEnv *env, jclass clz, int64_t this_arg, int8_tArray temporary_channel_id, int8_tArray funding_transaction) {
LDKChannelManager this_arg_conv;
this_arg_conv.inner = (void*)(this_arg & (~1));
LDKKeysInterface val_conv = *(LDKKeysInterface*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(val_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_keys_manager(&this_ptr_conv, val_conv);
}
LDKFeeEstimator val_conv = *(LDKFeeEstimator*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(val_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_fee_estimator(&this_ptr_conv, val_conv);
}
LDKWatch val_conv = *(LDKWatch*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(val_conv.this_arg);
+ LDKWatch_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_chain_monitor(&this_ptr_conv, val_conv);
}
LDKBroadcasterInterface val_conv = *(LDKBroadcasterInterface*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(val_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_tx_broadcaster(&this_ptr_conv, val_conv);
}
LDKLogger val_conv = *(LDKLogger*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(val_conv.this_arg);
+ LDKLogger_JCalls_cloned(&val_conv);
}
ChannelManagerReadArgs_set_logger(&this_ptr_conv, val_conv);
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKFeeEstimator fee_estimator_conv = *(LDKFeeEstimator*)(((uint64_t)fee_estimator) & ~1);
if (fee_estimator_conv.free == LDKFeeEstimator_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKFeeEstimator_JCalls_clone(fee_estimator_conv.this_arg);
+ LDKFeeEstimator_JCalls_cloned(&fee_estimator_conv);
}
LDKWatch chain_monitor_conv = *(LDKWatch*)(((uint64_t)chain_monitor) & ~1);
if (chain_monitor_conv.free == LDKWatch_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKWatch_JCalls_clone(chain_monitor_conv.this_arg);
+ LDKWatch_JCalls_cloned(&chain_monitor_conv);
}
LDKBroadcasterInterface tx_broadcaster_conv = *(LDKBroadcasterInterface*)(((uint64_t)tx_broadcaster) & ~1);
if (tx_broadcaster_conv.free == LDKBroadcasterInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKBroadcasterInterface_JCalls_clone(tx_broadcaster_conv.this_arg);
+ LDKBroadcasterInterface_JCalls_cloned(&tx_broadcaster_conv);
}
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKUserConfig default_config_conv;
default_config_conv.inner = (void*)(default_config & (~1));
this_ptr_conv.is_owned = false;
LDKStr ret_str = ErrorMessage_get_data(&this_ptr_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
this_ptr_conv.is_owned = false;
LDKStr ret_str = LightningError_get_err(&this_ptr_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKChannelMessageHandler val_conv = *(LDKChannelMessageHandler*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKChannelMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelMessageHandler_JCalls_clone(val_conv.this_arg);
+ LDKChannelMessageHandler_JCalls_cloned(&val_conv);
}
MessageHandler_set_chan_handler(&this_ptr_conv, val_conv);
}
LDKRoutingMessageHandler val_conv = *(LDKRoutingMessageHandler*)(((uint64_t)val) & ~1);
if (val_conv.free == LDKRoutingMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKRoutingMessageHandler_JCalls_clone(val_conv.this_arg);
+ LDKRoutingMessageHandler_JCalls_cloned(&val_conv);
}
MessageHandler_set_route_handler(&this_ptr_conv, val_conv);
}
LDKChannelMessageHandler chan_handler_arg_conv = *(LDKChannelMessageHandler*)(((uint64_t)chan_handler_arg) & ~1);
if (chan_handler_arg_conv.free == LDKChannelMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelMessageHandler_JCalls_clone(chan_handler_arg_conv.this_arg);
+ LDKChannelMessageHandler_JCalls_cloned(&chan_handler_arg_conv);
}
LDKRoutingMessageHandler route_handler_arg_conv = *(LDKRoutingMessageHandler*)(((uint64_t)route_handler_arg) & ~1);
if (route_handler_arg_conv.free == LDKRoutingMessageHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKRoutingMessageHandler_JCalls_clone(route_handler_arg_conv.this_arg);
+ LDKRoutingMessageHandler_JCalls_cloned(&route_handler_arg_conv);
}
LDKMessageHandler ret_var = MessageHandler_new(chan_handler_arg_conv, route_handler_arg_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKPeerManager ret_var = PeerManager_new(message_handler_conv, our_node_secret_ref, ephemeral_random_data_ref, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(((uint64_t)descriptor) & ~1);
if (descriptor_conv.free == LDKSocketDescriptor_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSocketDescriptor_JCalls_clone(descriptor_conv.this_arg);
+ LDKSocketDescriptor_JCalls_cloned(&descriptor_conv);
}
LDKCResult_CVec_u8ZPeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_u8ZPeerHandleErrorZ), "LDKCResult_CVec_u8ZPeerHandleErrorZ");
*ret_conv = PeerManager_new_outbound_connection(&this_arg_conv, their_node_id_ref, descriptor_conv);
LDKSocketDescriptor descriptor_conv = *(LDKSocketDescriptor*)(((uint64_t)descriptor) & ~1);
if (descriptor_conv.free == LDKSocketDescriptor_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKSocketDescriptor_JCalls_clone(descriptor_conv.this_arg);
+ LDKSocketDescriptor_JCalls_cloned(&descriptor_conv);
}
LDKCResult_NonePeerHandleErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_NonePeerHandleErrorZ), "LDKCResult_NonePeerHandleErrorZ");
*ret_conv = PeerManager_new_inbound_connection(&this_arg_conv, descriptor_conv);
return ret_ref;
}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1keysend_1route(JNIEnv *env, jclass clz, int8_tArray our_node_id, int64_t network, int8_tArray payee, int64_tArray first_hops, int64_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, int64_t logger) {
+ LDKPublicKey our_node_id_ref;
+ CHECK((*env)->GetArrayLength(env, our_node_id) == 33);
+ (*env)->GetByteArrayRegion(env, our_node_id, 0, 33, our_node_id_ref.compressed_form);
+ LDKNetworkGraph network_conv;
+ network_conv.inner = (void*)(network & (~1));
+ network_conv.is_owned = false;
+ LDKPublicKey payee_ref;
+ CHECK((*env)->GetArrayLength(env, payee) == 33);
+ (*env)->GetByteArrayRegion(env, payee, 0, 33, payee_ref.compressed_form);
+ LDKCVec_ChannelDetailsZ first_hops_constr;
+ first_hops_constr.datalen = (*env)->GetArrayLength(env, first_hops);
+ if (first_hops_constr.datalen > 0)
+ first_hops_constr.data = MALLOC(first_hops_constr.datalen * sizeof(LDKChannelDetails), "LDKCVec_ChannelDetailsZ Elements");
+ else
+ first_hops_constr.data = NULL;
+ int64_t* first_hops_vals = (*env)->GetLongArrayElements (env, first_hops, NULL);
+ for (size_t q = 0; q < first_hops_constr.datalen; q++) {
+ int64_t first_hops_conv_16 = first_hops_vals[q];
+ LDKChannelDetails first_hops_conv_16_conv;
+ first_hops_conv_16_conv.inner = (void*)(first_hops_conv_16 & (~1));
+ first_hops_conv_16_conv.is_owned = (first_hops_conv_16 & 1) || (first_hops_conv_16 == 0);
+ first_hops_constr.data[q] = first_hops_conv_16_conv;
+ }
+ (*env)->ReleaseLongArrayElements(env, first_hops, first_hops_vals, 0);
+ LDKCVec_RouteHintZ last_hops_constr;
+ last_hops_constr.datalen = (*env)->GetArrayLength(env, last_hops);
+ if (last_hops_constr.datalen > 0)
+ last_hops_constr.data = MALLOC(last_hops_constr.datalen * sizeof(LDKRouteHint), "LDKCVec_RouteHintZ Elements");
+ else
+ last_hops_constr.data = NULL;
+ int64_t* last_hops_vals = (*env)->GetLongArrayElements (env, last_hops, NULL);
+ for (size_t l = 0; l < last_hops_constr.datalen; l++) {
+ int64_t last_hops_conv_11 = last_hops_vals[l];
+ LDKRouteHint last_hops_conv_11_conv;
+ last_hops_conv_11_conv.inner = (void*)(last_hops_conv_11 & (~1));
+ last_hops_conv_11_conv.is_owned = (last_hops_conv_11 & 1) || (last_hops_conv_11 == 0);
+ last_hops_conv_11_conv = RouteHint_clone(&last_hops_conv_11_conv);
+ last_hops_constr.data[l] = last_hops_conv_11_conv;
+ }
+ (*env)->ReleaseLongArrayElements(env, last_hops, last_hops_vals, 0);
+ LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
+ if (logger_conv.free == LDKLogger_JCalls_free) {
+ // If this_arg is a JCalls struct, then we need to increment the refcnt in it.
+ LDKLogger_JCalls_cloned(&logger_conv);
+ }
+ LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
+ *ret_conv = get_keysend_route(our_node_id_ref, &network_conv, payee_ref, &first_hops_constr, last_hops_constr, final_value_msat, final_cltv, logger_conv);
+ FREE(first_hops_constr.data);
+ return (uint64_t)ret_conv;
+}
+
JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_get_1route(JNIEnv *env, jclass clz, int8_tArray our_node_id, int64_t network, int8_tArray payee, int64_t payee_features, int64_tArray first_hops, int64_tArray last_hops, int64_t final_value_msat, int32_t final_cltv, int64_t logger) {
LDKPublicKey our_node_id_ref;
CHECK((*env)->GetArrayLength(env, our_node_id) == 33);
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKCResult_RouteLightningErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_RouteLightningErrorZ), "LDKCResult_RouteLightningErrorZ");
*ret_conv = get_route(our_node_id_ref, &network_conv, payee_ref, payee_features_conv, &first_hops_constr, last_hops_constr, final_value_msat, final_cltv, logger_conv);
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKNetGraphMsgHandler ret_var = NetGraphMsgHandler_new(genesis_hash_ref, chain_access_conv_ptr, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKNetworkGraph network_graph_conv;
network_graph_conv.inner = (void*)(network_graph & (~1));
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
chain_access_conv = *(LDKAccess*)(((uint64_t)chain_access) & ~1);
if (chain_access_conv.free == LDKAccess_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKAccess_JCalls_clone(chain_access_conv.this_arg);
+ LDKAccess_JCalls_cloned(&chain_access_conv);
}
chain_access_conv_ptr = MALLOC(sizeof(LDKAccess), "LDKAccess");
*chain_access_conv_ptr = chain_access_conv;
this_arg_conv.is_owned = false;
LDKStr ret_str = FilesystemPersister_get_data_dir(&this_arg_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ), "LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ");
*ret_conv = FilesystemPersister_read_channelmonitors(&this_arg_conv, keys_manager_conv);
LDKChannelManagerPersister persister_conv = *(LDKChannelManagerPersister*)(((uint64_t)persister) & ~1);
if (persister_conv.free == LDKChannelManagerPersister_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKChannelManagerPersister_JCalls_clone(persister_conv.this_arg);
+ LDKChannelManagerPersister_JCalls_cloned(&persister_conv);
}
LDKEventHandler event_handler_conv = *(LDKEventHandler*)(((uint64_t)event_handler) & ~1);
if (event_handler_conv.free == LDKEventHandler_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKEventHandler_JCalls_clone(event_handler_conv.this_arg);
+ LDKEventHandler_JCalls_cloned(&event_handler_conv);
}
LDKChainMonitor chain_monitor_conv;
chain_monitor_conv.inner = (void*)(chain_monitor & (~1));
LDKLogger logger_conv = *(LDKLogger*)(((uint64_t)logger) & ~1);
if (logger_conv.free == LDKLogger_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKLogger_JCalls_clone(logger_conv.this_arg);
+ LDKLogger_JCalls_cloned(&logger_conv);
}
LDKBackgroundProcessor ret_var = BackgroundProcessor_start(persister_conv, event_handler_conv, &chain_monitor_conv, &channel_manager_conv, &peer_manager_conv, logger_conv);
CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
this_arg_conv = Description_clone(&this_arg_conv);
LDKStr ret_str = Description_into_inner(this_arg_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKCreationError* o_conv = (LDKCreationError*)(o & ~1);
LDKStr ret_str = CreationError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSemanticError* o_conv = (LDKSemanticError*)(o & ~1);
LDKStr ret_str = SemanticError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSignOrCreationError* o_conv = (LDKSignOrCreationError*)o;
LDKStr ret_str = SignOrCreationError_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKKeysInterface keys_manager_conv = *(LDKKeysInterface*)(((uint64_t)keys_manager) & ~1);
if (keys_manager_conv.free == LDKKeysInterface_JCalls_free) {
// If this_arg is a JCalls struct, then we need to increment the refcnt in it.
- LDKKeysInterface_JCalls_clone(keys_manager_conv.this_arg);
+ LDKKeysInterface_JCalls_cloned(&keys_manager_conv);
}
LDKCurrency network_conv = LDKCurrency_from_java(env, network);
LDKCOption_u64Z amt_msat_conv = *(LDKCOption_u64Z*)(((uint64_t)amt_msat) & ~1);
o_conv.is_owned = false;
LDKStr ret_str = Invoice_to_str(&o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
o_conv.is_owned = false;
LDKStr ret_str = SignedRawInvoice_to_str(&o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKCurrency* o_conv = (LDKCurrency*)(o & ~1);
LDKStr ret_str = Currency_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
LDKSiPrefix* o_conv = (LDKSiPrefix*)(o & ~1);
LDKStr ret_str = SiPrefix_to_str(o_conv);
jstring ret_conv = str_ref_to_java(env, ret_str.chars, ret_str.len);
+ Str_free(ret_str);
return ret_conv;
}
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKSign_1new
(JNIEnv *, jclass, jobject, jobject, jlong);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKSign_get_BaseSign
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKSign_1get_1BaseSign
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: Sign_write
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1NonePaymentSendFailureZ_1get_1err
(JNIEnv *, jclass, jlong);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKCResult_PaymentHashPaymentSendFailureZ_result_ok
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1result_1ok
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKCResult_PaymentHashPaymentSendFailureZ_get_ok
+ * Signature: (J)[B
+ */
+JNIEXPORT jbyteArray JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1ok
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKCResult_PaymentHashPaymentSendFailureZ_get_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCResult_1PaymentHashPaymentSendFailureZ_1get_1err
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: LDKNetAddress_ref_from_ptr
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKCVec_1C2Tuple_1TxidCVec_1C2Tuple_1u32ScriptZZZZ_1new
(JNIEnv *, jclass, jlongArray);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKPaymentPurpose_ref_from_ptr
+ * Signature: (J)Lorg/ldk/impl/bindings/LDKPaymentPurpose;
+ */
+JNIEXPORT jobject JNICALL Java_org_ldk_impl_bindings_LDKPaymentPurpose_1ref_1from_1ptr
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: LDKEvent_ref_from_ptr
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1new
(JNIEnv *, jclass, jobject, jobject);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKChannelMessageHandler_get_MessageSendEventsProvider
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKChannelMessageHandler_1get_1MessageSendEventsProvider
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: ChannelMessageHandler_handle_open_channel
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1new
(JNIEnv *, jclass, jobject, jobject);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: LDKRoutingMessageHandler_get_MessageSendEventsProvider
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_LDKRoutingMessageHandler_1get_1MessageSendEventsProvider
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: RoutingMessageHandler_handle_node_announcement
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1NonePaymentSendFailureZ_1clone
(JNIEnv *, jclass, jlong);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: CResult_PaymentHashPaymentSendFailureZ_ok
+ * Signature: ([B)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1ok
+ (JNIEnv *, jclass, jbyteArray);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: CResult_PaymentHashPaymentSendFailureZ_err
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1err
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: CResult_PaymentHashPaymentSendFailureZ_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1free
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: CResult_PaymentHashPaymentSendFailureZ_clone
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1PaymentHashPaymentSendFailureZ_1clone
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: CVec_NetAddressZ_free
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_CResult_1InvoiceSignOrCreationErrorZ_1clone
(JNIEnv *, jclass, jlong);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: PaymentPurpose_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1free
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: PaymentPurpose_clone
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_PaymentPurpose_1clone
+ (JNIEnv *, jclass, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: Event_free
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1payment
(JNIEnv *, jclass, jlong, jlong, jbyteArray, jbyteArray);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: ChannelManager_send_spontaneous_payment
+ * Signature: (JJ[B)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_ChannelManager_1send_1spontaneous_1payment
+ (JNIEnv *, jclass, jlong, jlong, jbyteArray);
+
/*
* Class: org_ldk_impl_bindings
* Method: ChannelManager_funding_transaction_generated
JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_RouteHintHop_1clone
(JNIEnv *, jclass, jlong);
+/*
+ * Class: org_ldk_impl_bindings
+ * Method: get_keysend_route
+ * Signature: ([BJ[B[J[JJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_get_1keysend_1route
+ (JNIEnv *, jclass, jbyteArray, jlong, jbyteArray, jlongArray, jlongArray, jlong, jint, jlong);
+
/*
* Class: org_ldk_impl_bindings
* Method: get_route
--- /dev/null
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_ldk_impl_bindings_LDKPaymentPurpose */
+
+#ifndef _Included_org_ldk_impl_bindings_LDKPaymentPurpose
+#define _Included_org_ldk_impl_bindings_LDKPaymentPurpose
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: org_ldk_impl_bindings_LDKPaymentPurpose
+ * Method: init
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_00024LDKPaymentPurpose_init
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif