X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FClosureReason.java;h=b4da105e045e997a61d117cebb9cb333b08783fe;hb=7b75443b8305c6a24d3c08520e1785e9d39960e4;hp=7c95760323ef93e4c840981b5ce75e8d4137e9bf;hpb=0de4267b2f4dd9a0b2b2dfab7efc788887894a33;p=ldk-java diff --git a/src/main/java/org/ldk/structs/ClosureReason.java b/src/main/java/org/ldk/structs/ClosureReason.java index 7c957603..b4da105e 100644 --- a/src/main/java/org/ldk/structs/ClosureReason.java +++ b/src/main/java/org/ldk/structs/ClosureReason.java @@ -9,7 +9,7 @@ import javax.annotation.Nullable; /** - * The reason the channel was closed. See individual variants more details. + * The reason the channel was closed. See individual variants for more details. */ @SuppressWarnings("unchecked") // We correctly assign various generic arrays public class ClosureReason extends CommonBase { @@ -45,6 +45,12 @@ public class ClosureReason extends CommonBase { if (raw_val.getClass() == bindings.LDKClosureReason.OutdatedChannelManager.class) { return new OutdatedChannelManager(ptr, (bindings.LDKClosureReason.OutdatedChannelManager)raw_val); } + if (raw_val.getClass() == bindings.LDKClosureReason.CounterpartyCoopClosedUnfundedChannel.class) { + return new CounterpartyCoopClosedUnfundedChannel(ptr, (bindings.LDKClosureReason.CounterpartyCoopClosedUnfundedChannel)raw_val); + } + if (raw_val.getClass() == bindings.LDKClosureReason.FundingBatchClosure.class) { + return new FundingBatchClosure(ptr, (bindings.LDKClosureReason.FundingBatchClosure)raw_val); + } assert false; return null; // Unreachable without extending the (internal) bindings interface } @@ -58,14 +64,19 @@ public class ClosureReason extends CommonBase { /** * The error which the peer sent us. * - * The string should be sanitized before it is used (e.g emitted to logs - * or printed to stdout). Otherwise, a well crafted error message may exploit + * Be careful about printing the peer_msg, a well-crafted message could exploit * a security vulnerability in the terminal emulator or the logging subsystem. + * To be safe, use `Display` on `UntrustedString` + * + * [`UntrustedString`]: crate::util::string::UntrustedString */ - public final java.lang.String peer_msg; + public final org.ldk.structs.UntrustedString peer_msg; private CounterpartyForceClosed(long ptr, bindings.LDKClosureReason.CounterpartyForceClosed obj) { super(null, ptr); - this.peer_msg = obj.peer_msg; + long peer_msg = obj.peer_msg; + org.ldk.structs.UntrustedString peer_msg_hu_conv = null; if (peer_msg < 0 || peer_msg > 4096) { peer_msg_hu_conv = new org.ldk.structs.UntrustedString(null, peer_msg); } + if (peer_msg_hu_conv != null) { peer_msg_hu_conv.ptrs_to.add(this); }; + this.peer_msg = peer_msg_hu_conv; } } /** @@ -147,6 +158,24 @@ public class ClosureReason extends CommonBase { super(null, ptr); } } + /** + * The counterparty requested a cooperative close of a channel that had not been funded yet. + * The channel has been immediately closed. + */ + public final static class CounterpartyCoopClosedUnfundedChannel extends ClosureReason { + private CounterpartyCoopClosedUnfundedChannel(long ptr, bindings.LDKClosureReason.CounterpartyCoopClosedUnfundedChannel obj) { + super(null, ptr); + } + } + /** + * Another channel in the same funding batch closed before the funding transaction + * was ready to be broadcast. + */ + public final static class FundingBatchClosure extends ClosureReason { + private FundingBatchClosure(long ptr, bindings.LDKClosureReason.FundingBatchClosure obj) { + super(null, ptr); + } + } long clone_ptr() { long ret = bindings.ClosureReason_clone_ptr(this.ptr); Reference.reachabilityFence(this); @@ -168,12 +197,13 @@ public class ClosureReason extends CommonBase { /** * Utility method to constructs a new CounterpartyForceClosed-variant ClosureReason */ - public static ClosureReason counterparty_force_closed(java.lang.String peer_msg) { - long ret = bindings.ClosureReason_counterparty_force_closed(peer_msg); + public static ClosureReason counterparty_force_closed(org.ldk.structs.UntrustedString peer_msg) { + long ret = bindings.ClosureReason_counterparty_force_closed(peer_msg == null ? 0 : peer_msg.ptr); Reference.reachabilityFence(peer_msg); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.ClosureReason ret_hu_conv = org.ldk.structs.ClosureReason.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(peer_msg); }; return ret_hu_conv; } @@ -255,11 +285,33 @@ public class ClosureReason extends CommonBase { return ret_hu_conv; } + /** + * Utility method to constructs a new CounterpartyCoopClosedUnfundedChannel-variant ClosureReason + */ + public static ClosureReason counterparty_coop_closed_unfunded_channel() { + long ret = bindings.ClosureReason_counterparty_coop_closed_unfunded_channel(); + if (ret >= 0 && ret <= 4096) { return null; } + org.ldk.structs.ClosureReason ret_hu_conv = org.ldk.structs.ClosureReason.constr_from_ptr(ret); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + return ret_hu_conv; + } + + /** + * Utility method to constructs a new FundingBatchClosure-variant ClosureReason + */ + public static ClosureReason funding_batch_closure() { + long ret = bindings.ClosureReason_funding_batch_closure(); + if (ret >= 0 && ret <= 4096) { return null; } + org.ldk.structs.ClosureReason ret_hu_conv = org.ldk.structs.ClosureReason.constr_from_ptr(ret); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); }; + return ret_hu_conv; + } + /** * Checks if two ClosureReasons contain equal inner contents. * This ignores pointers and is_owned flags and looks at the values in fields. */ - public boolean eq(ClosureReason b) { + public boolean eq(org.ldk.structs.ClosureReason b) { boolean ret = bindings.ClosureReason_eq(this.ptr, b == null ? 0 : b.ptr); Reference.reachabilityFence(this); Reference.reachabilityFence(b);