/**
- * 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 {
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
}
/**
* 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;
}
}
/**
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);
/**
* 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;
}
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);