X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FChannelMonitor.java;h=e19dfe42da49b7c4a159cc7807070f0aca1596b3;hb=3a507eb07003be3e6714e8a87fb397c09b401ce9;hp=22011661185b0b080faa70e067bd9fc25ab92635;hpb=2fd040ea4089280c50161a98fca36f254f6791b9;p=ldk-java diff --git a/src/main/java/org/ldk/structs/ChannelMonitor.java b/src/main/java/org/ldk/structs/ChannelMonitor.java index 22011661..e19dfe42 100644 --- a/src/main/java/org/ldk/structs/ChannelMonitor.java +++ b/src/main/java/org/ldk/structs/ChannelMonitor.java @@ -14,6 +14,13 @@ public class ChannelMonitor extends CommonBase { if (ptr != 0) { bindings.ChannelMonitor_free(ptr); } } + public ChannelMonitor clone() { + long ret = bindings.ChannelMonitor_clone(this.ptr); + ChannelMonitor ret_hu_conv = new ChannelMonitor(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public byte[] write() { byte[] ret = bindings.ChannelMonitor_write(this.ptr); return ret; @@ -37,9 +44,13 @@ public class ChannelMonitor extends CommonBase { public TwoTuple get_funding_txo() { long ret = bindings.ChannelMonitor_get_funding_txo(this.ptr); long ret_a = bindings.LDKC2Tuple_OutPointScriptZ_get_a(ret); - OutPoint ret_a_hu_conv = new OutPoint(null, ret_a);; + OutPoint ret_a_hu_conv = new OutPoint(null, ret_a); + ret_a_hu_conv.ptrs_to.add(this);; byte[] ret_b = bindings.LDKC2Tuple_OutPointScriptZ_get_b(ret); - TwoTuple ret_conv = new TwoTuple(ret_a_hu_conv, ret_b); + TwoTuple ret_conv = new TwoTuple(ret_a_hu_conv, ret_b, () -> { + bindings.C2Tuple_OutPointScriptZ_free(ret); + }); + ret_a_hu_conv.ptrs_to.add(ret_conv); return ret_conv; } @@ -49,6 +60,7 @@ public class ChannelMonitor extends CommonBase { for (int o = 0; o < ret.length; o++) { long arr_conv_14 = ret[o]; MonitorEvent arr_conv_14_hu_conv = new MonitorEvent(null, arr_conv_14); + arr_conv_14_hu_conv.ptrs_to.add(this); arr_conv_14_arr[o] = arr_conv_14_hu_conv; } return arr_conv_14_arr; @@ -85,10 +97,14 @@ public class ChannelMonitor extends CommonBase { int arr_conv_26_a = bindings.LDKC2Tuple_u32TxOutZ_get_a(arr_conv_26); long arr_conv_26_b = bindings.TxOut_clone(bindings.LDKC2Tuple_u32TxOutZ_get_b(arr_conv_26)); TxOut arr_conv_26_b_conv = new TxOut(null, arr_conv_26_b);; - TwoTuple arr_conv_26_conv = new TwoTuple(arr_conv_26_a, arr_conv_26_b_conv); + TwoTuple arr_conv_26_conv = new TwoTuple(arr_conv_26_a, arr_conv_26_b_conv, () -> { + bindings.C2Tuple_u32TxOutZ_free(arr_conv_26); + }); + arr_conv_26_b_conv.ptrs_to.add(arr_conv_26_conv); arr_conv_26_arr[a] = arr_conv_26_conv; }; TwoTuple[]> arr_conv_46_conv = new TwoTuple[]>(arr_conv_46_a, arr_conv_26_arr); + // Warning: We may not free the C tuple object! arr_conv_46_arr[u] = arr_conv_46_conv; } /* TODO 2 TwoTuple */;