X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FListen.java;h=8d5972171401f37d055c1b182118b076700b67a6;hb=6fe917116a65d7b62123226c4240d77ea2719783;hp=456b44f8372fce25568e66bbbccf42845729cea7;hpb=17113550a5fefab21f39f27fbfe02646b8db53ae;p=ldk-java diff --git a/src/main/java/org/ldk/structs/Listen.java b/src/main/java/org/ldk/structs/Listen.java index 456b44f8..8d597217 100644 --- a/src/main/java/org/ldk/structs/Listen.java +++ b/src/main/java/org/ldk/structs/Listen.java @@ -4,12 +4,17 @@ 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; /** - * The `Listen` trait is used to be notified of when blocks have been connected or disconnected - * from the chain. + * The `Listen` trait is used to notify when blocks have been connected or disconnected from the + * chain. * - * Useful when needing to replay chain data upon startup or as new chain events occur. + * Useful when needing to replay chain data upon startup or as new chain events occur. Clients + * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`]. + * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers + * when needed. */ @SuppressWarnings("unchecked") // We correctly assign various generic arrays public class Listen extends CommonBase { @@ -41,9 +46,11 @@ public class Listen extends CommonBase { impl_holder.held = new Listen(new bindings.LDKListen() { @Override public void block_connected(byte[] block, int height) { arg.block_connected(block, height); + Reference.reachabilityFence(arg); } @Override public void block_disconnected(byte[] header, int height) { arg.block_disconnected(header, height); + Reference.reachabilityFence(arg); } }); return impl_holder.held; @@ -53,13 +60,19 @@ public class Listen extends CommonBase { */ public void block_connected(byte[] block, int height) { bindings.Listen_block_connected(this.ptr, block, height); + Reference.reachabilityFence(this); + Reference.reachabilityFence(block); + Reference.reachabilityFence(height); } /** * Notifies the listener that a block was removed at the given height. */ public void block_disconnected(byte[] header, int height) { - bindings.Listen_block_disconnected(this.ptr, header, height); + bindings.Listen_block_disconnected(this.ptr, InternalUtils.check_arr_len(header, 80), height); + Reference.reachabilityFence(this); + Reference.reachabilityFence(header); + Reference.reachabilityFence(height); } }