X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FSocketDescriptor.java;h=0c76a24546ffb6c098de565092adbb364f1d3137;hb=3c60e0fd0da579be9932801c1be2b32014c944a5;hp=86fbfdec4c7f33edf405d2cd3242e1b554415551;hpb=12c3ea6f32816f379249a75863971a1c7e1089a1;p=ldk-java diff --git a/src/main/java/org/ldk/structs/SocketDescriptor.java b/src/main/java/org/ldk/structs/SocketDescriptor.java index 86fbfdec..0c76a245 100644 --- a/src/main/java/org/ldk/structs/SocketDescriptor.java +++ b/src/main/java/org/ldk/structs/SocketDescriptor.java @@ -4,6 +4,8 @@ import org.ldk.impl.bindings; import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; +import java.lang.ref.Reference; +import javax.annotation.Nullable; /** * Provides an object which can be used to send data to and which uniquely identifies a connection @@ -77,19 +79,23 @@ public class SocketDescriptor extends CommonBase { impl_holder.held = new SocketDescriptor(new bindings.LDKSocketDescriptor() { @Override public long send_data(byte[] data, boolean resume_read) { long ret = arg.send_data(data, resume_read); + Reference.reachabilityFence(arg); return ret; } @Override public void disconnect_socket() { arg.disconnect_socket(); + Reference.reachabilityFence(arg); } @Override public boolean eq(long other_arg) { SocketDescriptor ret_hu_conv = new SocketDescriptor(null, other_arg); - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; boolean ret = arg.eq(ret_hu_conv); + Reference.reachabilityFence(arg); return ret; } @Override public long hash() { long ret = arg.hash(); + Reference.reachabilityFence(arg); return ret; } }); @@ -116,6 +122,9 @@ public class SocketDescriptor extends CommonBase { */ public long send_data(byte[] data, boolean resume_read) { long ret = bindings.SocketDescriptor_send_data(this.ptr, data, resume_read); + Reference.reachabilityFence(this); + Reference.reachabilityFence(data); + Reference.reachabilityFence(resume_read); return ret; } @@ -127,6 +136,7 @@ public class SocketDescriptor extends CommonBase { */ public void disconnect_socket() { bindings.SocketDescriptor_disconnect_socket(this.ptr); + Reference.reachabilityFence(this); } /** @@ -135,6 +145,16 @@ public class SocketDescriptor extends CommonBase { */ public long hash() { long ret = bindings.SocketDescriptor_hash(this.ptr); + Reference.reachabilityFence(this); + return ret; + } + + @Override public int hashCode() { + return (int)this.hash(); + } + long clone_ptr() { + long ret = bindings.SocketDescriptor_clone_ptr(this.ptr); + Reference.reachabilityFence(this); return ret; } @@ -143,8 +163,10 @@ public class SocketDescriptor extends CommonBase { */ public SocketDescriptor clone() { long ret = bindings.SocketDescriptor_clone(this.ptr); + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } SocketDescriptor ret_hu_conv = new SocketDescriptor(null, ret); - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; return ret_hu_conv; }