X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FConfirm.java;h=ba9d766df38edd35d89ddd0b111333b0b57851e6;hb=6fe917116a65d7b62123226c4240d77ea2719783;hp=161d97af8731faa5d2ca0eed119416e80d4b3a3a;hpb=ba1af51214a8ea2de62b84cd23b6145173c71752;p=ldk-java diff --git a/src/main/java/org/ldk/structs/Confirm.java b/src/main/java/org/ldk/structs/Confirm.java index 161d97af..ba9d766d 100644 --- a/src/main/java/org/ldk/structs/Confirm.java +++ b/src/main/java/org/ldk/structs/Confirm.java @@ -4,6 +4,7 @@ import org.ldk.impl.bindings; import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; +import java.lang.ref.Reference; import javax.annotation.Nullable; /** @@ -70,7 +71,7 @@ public class Confirm extends CommonBase { * [chain order]: Confirm#Order * [`best_block_updated`]: Self::best_block_updated */ - void transactions_confirmed(byte[] header, TwoTuple[] txdata, int height); + void transactions_confirmed(byte[] header, TwoTuple_usizeTransactionZ[] txdata, int height); /** * Processes a transaction that is no longer confirmed as result of a chain reorganization. * @@ -111,27 +112,30 @@ public class Confirm extends CommonBase { final LDKConfirmHolder impl_holder = new LDKConfirmHolder(); impl_holder.held = new Confirm(new bindings.LDKConfirm() { @Override public void transactions_confirmed(byte[] header, long[] txdata, int height) { - TwoTuple[] txdata_conv_24_arr = new TwoTuple[txdata.length]; - for (int y = 0; y < txdata.length; y++) { - long txdata_conv_24 = txdata[y]; - long txdata_conv_24_a = bindings.LDKC2Tuple_usizeTransactionZ_get_a(txdata_conv_24); - byte[] txdata_conv_24_b = bindings.LDKC2Tuple_usizeTransactionZ_get_b(txdata_conv_24); - TwoTuple txdata_conv_24_conv = new TwoTuple(txdata_conv_24_a, txdata_conv_24_b, () -> { - bindings.C2Tuple_usizeTransactionZ_free(txdata_conv_24); - }); - txdata_conv_24_arr[y] = txdata_conv_24_conv; + int txdata_conv_28_len = txdata.length; + TwoTuple_usizeTransactionZ[] txdata_conv_28_arr = new TwoTuple_usizeTransactionZ[txdata_conv_28_len]; + for (int c = 0; c < txdata_conv_28_len; c++) { + long txdata_conv_28 = txdata[c]; + TwoTuple_usizeTransactionZ txdata_conv_28_hu_conv = new TwoTuple_usizeTransactionZ(null, txdata_conv_28); + txdata_conv_28_hu_conv.ptrs_to.add(this); + txdata_conv_28_arr[c] = txdata_conv_28_hu_conv; } - arg.transactions_confirmed(header, txdata_conv_24_arr, height); + arg.transactions_confirmed(header, txdata_conv_28_arr, height); + Reference.reachabilityFence(arg); } @Override public void transaction_unconfirmed(byte[] txid) { arg.transaction_unconfirmed(txid); + Reference.reachabilityFence(arg); } @Override public void best_block_updated(byte[] header, int height) { arg.best_block_updated(header, height); + Reference.reachabilityFence(arg); } @Override public byte[][] get_relevant_txids() { byte[][] ret = arg.get_relevant_txids(); - return ret; + Reference.reachabilityFence(arg); + byte[][] result = ret != null ? Arrays.stream(ret).map(ret_conv_8 -> InternalUtils.check_arr_len(ret_conv_8, 32)).toArray(byte[][]::new) : null; + return result; } }); return impl_holder.held; @@ -151,9 +155,12 @@ public class Confirm extends CommonBase { * [chain order]: Confirm#Order * [`best_block_updated`]: Self::best_block_updated */ - public void transactions_confirmed(byte[] header, TwoTuple[] txdata, int height) { - bindings.Confirm_transactions_confirmed(this.ptr, header, txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_24 -> bindings.C2Tuple_usizeTransactionZ_new(txdata_conv_24.a, txdata_conv_24.b)).toArray() : null, height); - /* TODO 2 TwoTuple */; + public void transactions_confirmed(byte[] header, TwoTuple_usizeTransactionZ[] txdata, int height) { + bindings.Confirm_transactions_confirmed(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray() : null, height); + Reference.reachabilityFence(this); + Reference.reachabilityFence(header); + Reference.reachabilityFence(txdata); + Reference.reachabilityFence(height); } /** @@ -167,7 +174,9 @@ public class Confirm extends CommonBase { * [`transactions_confirmed`]: Self::transactions_confirmed */ public void transaction_unconfirmed(byte[] txid) { - bindings.Confirm_transaction_unconfirmed(this.ptr, txid); + bindings.Confirm_transaction_unconfirmed(this.ptr, InternalUtils.check_arr_len(txid, 32)); + Reference.reachabilityFence(this); + Reference.reachabilityFence(txid); } /** @@ -177,7 +186,10 @@ public class Confirm extends CommonBase { * if they become available at the same time. */ public void best_block_updated(byte[] header, int height) { - bindings.Confirm_best_block_updated(this.ptr, header, height); + bindings.Confirm_best_block_updated(this.ptr, InternalUtils.check_arr_len(header, 80), height); + Reference.reachabilityFence(this); + Reference.reachabilityFence(header); + Reference.reachabilityFence(height); } /** @@ -197,6 +209,7 @@ public class Confirm extends CommonBase { */ public byte[][] get_relevant_txids() { byte[][] ret = bindings.Confirm_get_relevant_txids(this.ptr); + Reference.reachabilityFence(this); return ret; }