+ if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(arg); };
+ return ret_hu_conv;
+ }
+
+ /**
+ * Creates a new, empty, network graph.
+ */
+ public static NetworkGraph of(org.ldk.enums.Network network, org.ldk.structs.Logger logger) {
+ long ret = bindings.NetworkGraph_new(network, logger.ptr);
+ Reference.reachabilityFence(network);
+ Reference.reachabilityFence(logger);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ org.ldk.structs.NetworkGraph ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.NetworkGraph(null, ret); }
+ if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
+ if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(logger); };
+ return ret_hu_conv;
+ }
+
+ /**
+ * Returns a read-only view of the network graph.
+ */
+ public ReadOnlyNetworkGraph read_only() {
+ long ret = bindings.NetworkGraph_read_only(this.ptr);
+ Reference.reachabilityFence(this);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ org.ldk.structs.ReadOnlyNetworkGraph ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.ReadOnlyNetworkGraph(null, ret); }
+ if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
+ return ret_hu_conv;
+ }
+
+ /**
+ * The unix timestamp provided by the most recent rapid gossip sync.
+ * It will be set by the rapid sync process after every sync completion.
+ */
+ public Option_u32Z get_last_rapid_gossip_sync_timestamp() {
+ long ret = bindings.NetworkGraph_get_last_rapid_gossip_sync_timestamp(this.ptr);
+ Reference.reachabilityFence(this);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ org.ldk.structs.Option_u32Z ret_hu_conv = org.ldk.structs.Option_u32Z.constr_from_ptr(ret);
+ if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
+ return ret_hu_conv;
+ }
+
+ /**
+ * Update the unix timestamp provided by the most recent rapid gossip sync.
+ * This should be done automatically by the rapid sync process after every sync completion.
+ */
+ public void set_last_rapid_gossip_sync_timestamp(int last_rapid_gossip_sync_timestamp) {
+ bindings.NetworkGraph_set_last_rapid_gossip_sync_timestamp(this.ptr, last_rapid_gossip_sync_timestamp);
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(last_rapid_gossip_sync_timestamp);
+ }
+
+ /**
+ * For an already known node (from channel announcements), update its stored properties from a
+ * given node announcement.
+ *
+ * You probably don't want to call this directly, instead relying on a P2PGossipSync's
+ * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
+ * routing messages from a source using a protocol other than the lightning P2P protocol.
+ */
+ public Result_NoneLightningErrorZ update_node_from_announcement(org.ldk.structs.NodeAnnouncement msg) {
+ long ret = bindings.NetworkGraph_update_node_from_announcement(this.ptr, msg == null ? 0 : msg.ptr);
+ Reference.reachabilityFence(this);
+ Reference.reachabilityFence(msg);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ Result_NoneLightningErrorZ ret_hu_conv = Result_NoneLightningErrorZ.constr_from_ptr(ret);
+ if (this != null) { this.ptrs_to.add(msg); };