X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FLockedNetworkGraph.java;h=c77af3793905dffe5b5ecfcff3aa717a595fe36d;hb=17113550a5fefab21f39f27fbfe02646b8db53ae;hp=3f1684a94d2d110a0e464e27d0dd357b808a72c3;hpb=3d559f3266fde7c6a21248c10d9a7145125b5e69;p=ldk-java diff --git a/src/main/java/org/ldk/structs/LockedNetworkGraph.java b/src/main/java/org/ldk/structs/LockedNetworkGraph.java index 3f1684a9..c77af379 100644 --- a/src/main/java/org/ldk/structs/LockedNetworkGraph.java +++ b/src/main/java/org/ldk/structs/LockedNetworkGraph.java @@ -2,17 +2,30 @@ package org.ldk.structs; import org.ldk.impl.bindings; import org.ldk.enums.*; +import org.ldk.util.*; +import java.util.Arrays; -public class LockedNetworkGraph extends CommonBase { + +/** + * A simple newtype for RwLockReadGuard<'a, NetworkGraph>. + * This exists only to make accessing a RwLock possible from + * the C bindings, as it can be done directly in Rust code. + */ +@SuppressWarnings("unchecked") // We correctly assign various generic arrays +public class LockedNetworkGraph extends CommonBase implements AutoCloseable { LockedNetworkGraph(Object _dummy, long ptr) { super(ptr); } - @Override @SuppressWarnings("deprecation") - protected void finalize() throws Throwable { - bindings.LockedNetworkGraph_free(ptr); super.finalize(); + @Override public void close() { + if (ptr != 0) { bindings.LockedNetworkGraph_free(ptr); } } + /** + * Get a reference to the NetworkGraph which this read-lock contains. + */ public NetworkGraph graph() { - NetworkGraph ret = new NetworkGraph(null, bindings.LockedNetworkGraph_graph(this.ptr)); - return ret; + long ret = bindings.LockedNetworkGraph_graph(this.ptr); + NetworkGraph ret_hu_conv = new NetworkGraph(null, ret); + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; } }