Update java bindings with new generator and new upstream code
[ldk-java] / src / main / java / org / ldk / structs / LockedNetworkGraph.java
index 3f1684a94d2d110a0e464e27d0dd357b808a72c3..c77af3793905dffe5b5ecfcff3aa717a595fe36d 100644 (file)
@@ -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<NetworkGraph> 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;
        }
 
 }