X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FChainParameters.java;h=72aafcf451837eabbaac9aa8956f4d86cc3a90d4;hb=1854b5cebef22ace9e9e4dd191f609818df9ce08;hp=06e56937ebdd583c2ade078d1f62081e33814077;hpb=246459dcbc3be28c38b4951140a5933f4b3aa024;p=ldk-java diff --git a/src/main/java/org/ldk/structs/ChainParameters.java b/src/main/java/org/ldk/structs/ChainParameters.java index 06e56937..72aafcf4 100644 --- a/src/main/java/org/ldk/structs/ChainParameters.java +++ b/src/main/java/org/ldk/structs/ChainParameters.java @@ -4,7 +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; + +/** + * Chain-related parameters used to construct a new `ChannelManager`. + * + * Typically, the block-specific parameters are derived from the best block hash for the network, + * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters + * are not needed when deserializing a previously constructed `ChannelManager`. + */ @SuppressWarnings("unchecked") // We correctly assign various generic arrays public class ChainParameters extends CommonBase { ChainParameters(Object _dummy, long ptr) { super(ptr); } @@ -14,37 +24,77 @@ public class ChainParameters extends CommonBase { if (ptr != 0) { bindings.ChainParameters_free(ptr); } } - public LDKNetwork get_network() { - LDKNetwork ret = bindings.ChainParameters_get_network(this.ptr); + /** + * The network for determining the `chain_hash` in Lightning messages. + */ + public Network get_network() { + Network ret = bindings.ChainParameters_get_network(this.ptr); + Reference.reachabilityFence(this); return ret; } - public void set_network(LDKNetwork val) { + /** + * The network for determining the `chain_hash` in Lightning messages. + */ + public void set_network(org.ldk.enums.Network val) { bindings.ChainParameters_set_network(this.ptr, val); + Reference.reachabilityFence(this); + Reference.reachabilityFence(val); } - public byte[] get_latest_hash() { - byte[] ret = bindings.ChainParameters_get_latest_hash(this.ptr); - return ret; + /** + * The hash and height of the latest block successfully connected. + * + * Used to track on-chain channel funding outputs and send payments with reliable timelocks. + */ + public BestBlock get_best_block() { + long ret = bindings.ChainParameters_get_best_block(this.ptr); + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } + BestBlock ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new BestBlock(null, ret); } + ret_hu_conv.ptrs_to.add(this); + return ret_hu_conv; } - public void set_latest_hash(byte[] val) { - bindings.ChainParameters_set_latest_hash(this.ptr, val); + /** + * The hash and height of the latest block successfully connected. + * + * Used to track on-chain channel funding outputs and send payments with reliable timelocks. + */ + public void set_best_block(BestBlock val) { + bindings.ChainParameters_set_best_block(this.ptr, val == null ? 0 : val.ptr & ~1); + Reference.reachabilityFence(this); + Reference.reachabilityFence(val); } - public long get_latest_height() { - long ret = bindings.ChainParameters_get_latest_height(this.ptr); - return ret; + /** + * Constructs a new ChainParameters given each field + */ + public static ChainParameters of(org.ldk.enums.Network network_arg, BestBlock best_block_arg) { + long ret = bindings.ChainParameters_new(network_arg, best_block_arg == null ? 0 : best_block_arg.ptr & ~1); + Reference.reachabilityFence(network_arg); + Reference.reachabilityFence(best_block_arg); + if (ret >= 0 && ret <= 4096) { return null; } + ChainParameters ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new ChainParameters(null, ret); } + ret_hu_conv.ptrs_to.add(ret_hu_conv); + return ret_hu_conv; } - public void set_latest_height(long val) { - bindings.ChainParameters_set_latest_height(this.ptr, val); + long clone_ptr() { + long ret = bindings.ChainParameters_clone_ptr(this.ptr); + Reference.reachabilityFence(this); + return ret; } - public static ChainParameters constructor_new(LDKNetwork network_arg, byte[] latest_hash_arg, long latest_height_arg) { - long ret = bindings.ChainParameters_new(network_arg, latest_hash_arg, latest_height_arg); - ChainParameters ret_hu_conv = new ChainParameters(null, ret); - ret_hu_conv.ptrs_to.add(ret_hu_conv); + /** + * Creates a copy of the ChainParameters + */ + public ChainParameters clone() { + long ret = bindings.ChainParameters_clone(this.ptr); + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } + ChainParameters ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new ChainParameters(null, ret); } + ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; }