X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FScorer.java;h=0bd7418378233502327bea0984d106ee9e77682d;hb=23cf651a6855035c3fde1cf62cb86002a5731342;hp=f1f8ecd548f029d5ece646b7fe9b0713098898fe;hpb=0e5e33e2bb46c905f6c9478fbfcda11be6b309ff;p=ldk-java diff --git a/src/main/java/org/ldk/structs/Scorer.java b/src/main/java/org/ldk/structs/Scorer.java index f1f8ecd5..0bd74183 100644 --- a/src/main/java/org/ldk/structs/Scorer.java +++ b/src/main/java/org/ldk/structs/Scorer.java @@ -4,18 +4,19 @@ 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; /** - * [`routing::Score`] implementation that provides reasonable default behavior. + * [`Score`] implementation that provides reasonable default behavior. * * Used to apply a fixed penalty to each channel, thus avoiding long paths when shorter paths with - * slightly higher fees are available. + * slightly higher fees are available. Will further penalize channels that fail to relay payments. * * See [module-level documentation] for usage. * - * [module-level documentation]: crate::routing::scorer + * [module-level documentation]: crate::routing::scoring */ @SuppressWarnings("unchecked") // We correctly assign various generic arrays public class Scorer extends CommonBase { @@ -27,12 +28,17 @@ public class Scorer extends CommonBase { } /** - * Creates a new scorer using `base_penalty_msat` as the channel penalty. + * Creates a new scorer using the given scoring parameters. */ - public static Scorer of(long base_penalty_msat) { - long ret = bindings.Scorer_new(base_penalty_msat); - if (ret >= 0 && ret < 1024) { return null; } - Scorer ret_hu_conv = new Scorer(null, ret); + public static Scorer of(long params_base_penalty_msat_arg, long params_failure_penalty_msat_arg, short params_overuse_penalty_start_1024th_arg, long params_overuse_penalty_msat_per_1024th_arg, long params_failure_penalty_half_life_arg) { + long ret = bindings.Scorer_new(bindings.ScoringParameters_new(params_base_penalty_msat_arg, params_failure_penalty_msat_arg, params_overuse_penalty_start_1024th_arg, params_overuse_penalty_msat_per_1024th_arg, params_failure_penalty_half_life_arg)); + Reference.reachabilityFence(params_base_penalty_msat_arg); + Reference.reachabilityFence(params_failure_penalty_msat_arg); + Reference.reachabilityFence(params_overuse_penalty_start_1024th_arg); + Reference.reachabilityFence(params_overuse_penalty_msat_per_1024th_arg); + Reference.reachabilityFence(params_failure_penalty_half_life_arg); + if (ret >= 0 && ret <= 4096) { return null; } + Scorer ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new Scorer(null, ret); } ret_hu_conv.ptrs_to.add(ret_hu_conv); return ret_hu_conv; } @@ -42,8 +48,8 @@ public class Scorer extends CommonBase { */ public static Scorer with_default() { long ret = bindings.Scorer_default(); - if (ret >= 0 && ret < 1024) { return null; } - Scorer ret_hu_conv = new Scorer(null, ret); + if (ret >= 0 && ret <= 4096) { return null; } + Scorer ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new Scorer(null, ret); } ret_hu_conv.ptrs_to.add(ret_hu_conv); return ret_hu_conv; } @@ -54,10 +60,31 @@ public class Scorer extends CommonBase { */ public Score as_Score() { long ret = bindings.Scorer_as_Score(this.ptr); - if (ret >= 0 && ret < 1024) { return null; } + Reference.reachabilityFence(this); + if (ret >= 0 && ret <= 4096) { return null; } Score ret_hu_conv = new Score(null, ret); ret_hu_conv.ptrs_to.add(this); return ret_hu_conv; } + /** + * Serialize the Scorer object into a byte array which can be read by Scorer_read + */ + public byte[] write() { + byte[] ret = bindings.Scorer_write(this.ptr); + Reference.reachabilityFence(this); + return ret; + } + + /** + * Read a Scorer from a byte array, created by Scorer_write + */ + public static Result_ScorerDecodeErrorZ read(byte[] ser) { + long ret = bindings.Scorer_read(ser); + Reference.reachabilityFence(ser); + if (ret >= 0 && ret <= 4096) { return null; } + Result_ScorerDecodeErrorZ ret_hu_conv = Result_ScorerDecodeErrorZ.constr_from_ptr(ret); + return ret_hu_conv; + } + }