X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FNetAddress.java;h=f4f729ffc3c11686e6441b9838faa6291613daae;hb=300b54d26fe5ed89f472ef821ebf67d56c917e49;hp=73f5bc325d6491b63c0adc7853217fe9a9314afc;hpb=ff3dacec3be60f870d81f6df11bd9fff92aa6047;p=ldk-java diff --git a/src/main/java/org/ldk/structs/NetAddress.java b/src/main/java/org/ldk/structs/NetAddress.java index 73f5bc32..f4f729ff 100644 --- a/src/main/java/org/ldk/structs/NetAddress.java +++ b/src/main/java/org/ldk/structs/NetAddress.java @@ -33,6 +33,9 @@ public class NetAddress extends CommonBase { if (raw_val.getClass() == bindings.LDKNetAddress.OnionV3.class) { return new OnionV3(ptr, (bindings.LDKNetAddress.OnionV3)raw_val); } + if (raw_val.getClass() == bindings.LDKNetAddress.Hostname.class) { + return new Hostname(ptr, (bindings.LDKNetAddress.Hostname)raw_val); + } assert false; return null; // Unreachable without extending the (internal) bindings interface } @@ -115,6 +118,27 @@ public class NetAddress extends CommonBase { this.port = obj.port; } } + /** + * A hostname/port on which the peer is listening. + */ + public final static class Hostname extends NetAddress { + /** + * The hostname on which the node is listening. + */ + public final org.ldk.structs.Hostname hostname; + /** + * The port on which the node is listening. + */ + public final short port; + private Hostname(long ptr, bindings.LDKNetAddress.Hostname obj) { + super(null, ptr); + long hostname = obj.hostname; + org.ldk.structs.Hostname hostname_hu_conv = null; if (hostname < 0 || hostname > 4096) { hostname_hu_conv = new org.ldk.structs.Hostname(null, hostname); } + if (hostname_hu_conv != null) { hostname_hu_conv.ptrs_to.add(this); }; + this.hostname = hostname_hu_conv; + this.port = obj.port; + } + } long clone_ptr() { long ret = bindings.NetAddress_clone_ptr(this.ptr); Reference.reachabilityFence(this); @@ -129,7 +153,7 @@ public class NetAddress extends CommonBase { Reference.reachabilityFence(this); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(ret); - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; return ret_hu_conv; } @@ -142,7 +166,7 @@ public class NetAddress extends CommonBase { Reference.reachabilityFence(port); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; return ret_hu_conv; } @@ -155,7 +179,7 @@ public class NetAddress extends CommonBase { Reference.reachabilityFence(port); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; return ret_hu_conv; } @@ -167,7 +191,7 @@ public class NetAddress extends CommonBase { Reference.reachabilityFence(a); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; return ret_hu_conv; } @@ -182,10 +206,39 @@ public class NetAddress extends CommonBase { Reference.reachabilityFence(port); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; return ret_hu_conv; } + /** + * Utility method to constructs a new Hostname-variant NetAddress + */ + public static NetAddress hostname(Hostname hostname, short port) { + long ret = bindings.NetAddress_hostname(hostname == null ? 0 : hostname.ptr, port); + Reference.reachabilityFence(hostname); + Reference.reachabilityFence(port); + if (ret >= 0 && ret <= 4096) { return null; } + org.ldk.structs.NetAddress ret_hu_conv = org.ldk.structs.NetAddress.constr_from_ptr(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(hostname); }; + return ret_hu_conv; + } + + /** + * Checks if two NetAddresss contain equal inner contents. + * This ignores pointers and is_owned flags and looks at the values in fields. + */ + public boolean eq(NetAddress b) { + boolean ret = bindings.NetAddress_eq(this.ptr, b == null ? 0 : b.ptr); + Reference.reachabilityFence(this); + Reference.reachabilityFence(b); + return ret; + } + + @Override public boolean equals(Object o) { + if (!(o instanceof NetAddress)) return false; + return this.eq((NetAddress)o); + } /** * Serialize the NetAddress object into a byte array which can be read by NetAddress_read */