Rewrite the world, with several interdependant changes (but several still WIP)
[ldk-java] / src / main / java / org / ldk / structs / PeerManager.java
index 81d89509c5c49129c4b1336b12dda32d374cd876..0a542cd3b2b00dd9ab0a5ed7ef1f4d4359449445 100644 (file)
@@ -2,21 +2,32 @@ package org.ldk.structs;
 
 import org.ldk.impl.bindings;
 import org.ldk.enums.*;
+import org.ldk.util.*;
+import java.util.Arrays;
 
+@SuppressWarnings("unchecked") // We correctly assign various generic arrays
 public class PeerManager extends CommonBase {
        PeerManager(Object _dummy, long ptr) { super(ptr); }
        @Override @SuppressWarnings("deprecation")
        protected void finalize() throws Throwable {
-               bindings.PeerManager_free(ptr); super.finalize();
+               super.finalize();
+               bindings.PeerManager_free(ptr);
        }
 
-       public PeerManager(MessageHandler message_handler, byte[] our_node_secret, byte[] ephemeral_random_data, Logger logger) {
-               super(bindings.PeerManager_new(message_handler.ptr & ~1, our_node_secret, ephemeral_random_data, logger.ptr));
-               this.ptrs_to.add(message_handler);
-               this.ptrs_to.add(logger);
+       public static PeerManager constructor_new(ChannelMessageHandler message_handler_chan_handler_arg, RoutingMessageHandler message_handler_route_handler_arg, byte[] our_node_secret, byte[] ephemeral_random_data, Logger logger) {
+               long ret = bindings.PeerManager_new(bindings.MessageHandler_new(message_handler_chan_handler_arg == null ? 0 : message_handler_chan_handler_arg.ptr, message_handler_route_handler_arg == null ? 0 : message_handler_route_handler_arg.ptr), our_node_secret, ephemeral_random_data, logger == null ? 0 : logger.ptr);
+               PeerManager ret_hu_conv = new PeerManager(null, ret);
+               ret_hu_conv.ptrs_to.add(message_handler_chan_handler_arg);
+               ret_hu_conv.ptrs_to.add(message_handler_route_handler_arg);
+               ret_hu_conv.ptrs_to.add(logger);
+               return ret_hu_conv;
+       }
+
+       public byte[][] get_peer_node_ids() {
+               byte[][] ret = bindings.PeerManager_get_peer_node_ids(this.ptr);
+               return ret;
        }
 
-       // Skipped PeerManager_get_peer_node_ids
        // Skipped PeerManager_new_outbound_connection
        // Skipped PeerManager_new_inbound_connection
        // Skipped PeerManager_write_buffer_space_avail
@@ -26,7 +37,7 @@ public class PeerManager extends CommonBase {
        }
 
        public void socket_disconnected(SocketDescriptor descriptor) {
-               bindings.PeerManager_socket_disconnected(this.ptr, descriptor.ptr);
+               bindings.PeerManager_socket_disconnected(this.ptr, descriptor == null ? 0 : descriptor.ptr);
                this.ptrs_to.add(descriptor);
        }