X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=node-net%2Fnet.mts;h=c70bf8f077ab1b7c6c416b3ea957175d8e9c123d;hb=ffdd56c967087cba7548599934585b8a9a3102e2;hp=58da387d6c59177c363e2777f31091079558caf4;hpb=d6683cf511d27d14c1047a6cb166a391c952bf1a;p=ldk-java diff --git a/node-net/net.mts b/node-net/net.mts index 58da387d..c70bf8f0 100644 --- a/node-net/net.mts +++ b/node-net/net.mts @@ -8,6 +8,12 @@ export class NodeLDKNet { private ping_timer; private servers: net.Server[]; public constructor(public peer_manager: ldk.PeerManager) { + // @ts-ignore + if (peer_manager._node_ldk_net_singleton_check != undefined) { + throw "Only one NdoeLDKNet should exist per PeerManager"; + } + // @ts-ignore + peer_manager._node_ldk_net_singleton_check = this; this.ping_timer = setInterval(function() { peer_manager.timer_tick_occurred(); peer_manager.process_events(); @@ -24,6 +30,8 @@ export class NodeLDKNet { server.close(); } this.peer_manager.disconnect_all_peers(); + // @ts-ignore + delete this.peer_manager._node_ldk_net_singleton_check; } /** @@ -82,15 +90,18 @@ export class NodeLDKNet { socket.on("close", function() { this_pm.socket_disconnected(descriptor); }); + socket.on("error", function() { + this_pm.socket_disconnected(descriptor); + }); return descriptor; } - private static v4_addr_from_ip(ip: string, port: number): ldk.NetAddress { + private static v4_addr_from_ip(ip: string, port: number): ldk.SocketAddress { const sockaddr = ip.split(".").map(parseFloat); - return ldk.NetAddress.constructor_ipv4(new Uint8Array(sockaddr), port); + return ldk.SocketAddress.constructor_tcp_ip_v4(new Uint8Array(sockaddr), port); } - private static v6_addr_from_ip(ip: string, port: number): ldk.NetAddress { + private static v6_addr_from_ip(ip: string, port: number): ldk.SocketAddress { const sockaddr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; const halves = ip.split("::"); // either one or two elements const first_half = halves[0].split(":"); @@ -107,20 +118,20 @@ export class NodeLDKNet { sockaddr[15 - idx*2] = v & 0xff; } } - return ldk.NetAddress.constructor_ipv6(new Uint8Array(sockaddr), port); + return ldk.SocketAddress.constructor_tcp_ip_v6(new Uint8Array(sockaddr), port); } - private static get_addr_from_socket(socket: net.Socket): ldk.Option_NetAddressZ { + private static get_addr_from_socket(socket: net.Socket): ldk.Option_SocketAddressZ { const addr = socket.remoteAddress; if (addr === undefined) - return ldk.Option_NetAddressZ.constructor_none(); + return ldk.Option_SocketAddressZ.constructor_none(); if (net.isIPv4(addr)) { - return ldk.Option_NetAddressZ.constructor_some(NodeLDKNet.v4_addr_from_ip(addr, socket.remotePort)); + return ldk.Option_SocketAddressZ.constructor_some(NodeLDKNet.v4_addr_from_ip(addr, socket.remotePort)); } if (net.isIPv6(addr)) { - return ldk.Option_NetAddressZ.constructor_some(NodeLDKNet.v6_addr_from_ip(addr, socket.remotePort)); + return ldk.Option_SocketAddressZ.constructor_some(NodeLDKNet.v6_addr_from_ip(addr, socket.remotePort)); } - return ldk.Option_NetAddressZ.constructor_none(); + return ldk.Option_SocketAddressZ.constructor_none(); } /**