X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fstructs%2FChannelMonitor.ts;h=ff746a206aa4d6710141f5d54ecf94f242e4c55e;hb=3a507eb07003be3e6714e8a87fb397c09b401ce9;hp=9c3bc931c38090ebffef8134e28289e1e7064a48;hpb=acecce750cf1159a51f9d1a4dbfd717520739e92;p=ldk-java diff --git a/ts/structs/ChannelMonitor.ts b/ts/structs/ChannelMonitor.ts index 9c3bc931..ff746a20 100644 --- a/ts/structs/ChannelMonitor.ts +++ b/ts/structs/ChannelMonitor.ts @@ -18,6 +18,13 @@ import * as bindings from '../bindings' // TODO: figure out location bindings.ChannelMonitor_free(this.ptr); } } + public ChannelMonitor clone() { + number ret = bindings.ChannelMonitor_clone(this.ptr); + const ret_hu_conv: ChannelMonitor = new ChannelMonitor(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; + } + public Uint8Array write() { Uint8Array ret = bindings.ChannelMonitor_write(this.ptr); return ret; @@ -41,9 +48,13 @@ import * as bindings from '../bindings' // TODO: figure out location public TwoTuple get_funding_txo() { number ret = bindings.ChannelMonitor_get_funding_txo(this.ptr); number ret_a = bindings.LDKC2Tuple_OutPointScriptZ_get_a(ret); - const ret_a_hu_conv: OutPoint = new OutPoint(null, ret_a);; + const ret_a_hu_conv: OutPoint = new OutPoint(null, ret_a); + ret_a_hu_conv.ptrs_to.add(this);; Uint8Array 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; } @@ -53,6 +64,7 @@ import * as bindings from '../bindings' // TODO: figure out location for (int o = 0; o < ret.length; o++) { number arr_conv_14 = ret[o]; const arr_conv_14_hu_conv: MonitorEvent = 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; @@ -87,12 +99,16 @@ import * as bindings from '../bindings' // TODO: figure out location for (int z = 0; z < arr_conv_49_b.length; z++) { number arr_conv_25 = arr_conv_49_b[z]; number arr_conv_25_a = bindings.LDKC2Tuple_u32TxOutZ_get_a(arr_conv_25); - number arr_conv_25_b = bindings.LDKC2Tuple_u32TxOutZ_get_b(arr_conv_25); + number arr_conv_25_b = bindings.TxOut_clone(bindings.LDKC2Tuple_u32TxOutZ_get_b(arr_conv_25)); TxOut arr_conv_25_b_conv = new TxOut(null, arr_conv_25_b);; - TwoTuple arr_conv_25_conv = new TwoTuple(arr_conv_25_a, arr_conv_25_b_conv); + TwoTuple arr_conv_25_conv = new TwoTuple(arr_conv_25_a, arr_conv_25_b_conv, () -> { + bindings.C2Tuple_u32TxOutZ_free(arr_conv_25); + }); + arr_conv_25_b_conv.ptrs_to.add(arr_conv_25_conv); arr_conv_25_arr[z] = arr_conv_25_conv; }; TwoTuple[]> arr_conv_49_conv = new TwoTuple[]>(arr_conv_49_a, arr_conv_25_arr); + // Warning: We may not free the C tuple object! arr_conv_49_arr[x] = arr_conv_49_conv; } /* TODO 2 TwoTuple */;