6 namespace org { namespace ldk { namespace structs {
9 * This enum is used to specify which error data to send to peers when failing back an HTLC
10 * using [`ChannelManager::fail_htlc_backwards_with_reason`].
12 * For more info on failure codes, see <https://github.com/lightning/bolts/blob/master/04-onion-routing.md#failure-messages>.
14 public class FailureCode : CommonBase {
15 protected FailureCode(object _dummy, long ptr) : base(ptr) { }
17 if (ptr != 0) { bindings.FailureCode_free(ptr); }
20 internal static FailureCode constr_from_ptr(long ptr) {
21 long raw_ty = bindings.LDKFailureCode_ty_from_ptr(ptr);
23 case 0: return new FailureCode_TemporaryNodeFailure(ptr);
24 case 1: return new FailureCode_RequiredNodeFeatureMissing(ptr);
25 case 2: return new FailureCode_IncorrectOrUnknownPaymentDetails(ptr);
26 case 3: return new FailureCode_InvalidOnionPayload(ptr);
28 throw new ArgumentException("Impossible enum variant");
32 /** A FailureCode of type TemporaryNodeFailure */
33 public class FailureCode_TemporaryNodeFailure : FailureCode {
34 internal FailureCode_TemporaryNodeFailure(long ptr) : base(null, ptr) {
37 /** A FailureCode of type RequiredNodeFeatureMissing */
38 public class FailureCode_RequiredNodeFeatureMissing : FailureCode {
39 internal FailureCode_RequiredNodeFeatureMissing(long ptr) : base(null, ptr) {
42 /** A FailureCode of type IncorrectOrUnknownPaymentDetails */
43 public class FailureCode_IncorrectOrUnknownPaymentDetails : FailureCode {
44 internal FailureCode_IncorrectOrUnknownPaymentDetails(long ptr) : base(null, ptr) {
47 /** A FailureCode of type InvalidOnionPayload */
48 public class FailureCode_InvalidOnionPayload : FailureCode {
49 public Option_C2Tuple_u64u16ZZ invalid_onion_payload;
50 internal FailureCode_InvalidOnionPayload(long ptr) : base(null, ptr) {
51 long invalid_onion_payload = bindings.LDKFailureCode_InvalidOnionPayload_get_invalid_onion_payload(ptr);
52 org.ldk.structs.Option_C2Tuple_u64u16ZZ invalid_onion_payload_hu_conv = org.ldk.structs.Option_C2Tuple_u64u16ZZ.constr_from_ptr(invalid_onion_payload);
53 if (invalid_onion_payload_hu_conv != null) { invalid_onion_payload_hu_conv.ptrs_to.AddLast(this); };
54 this.invalid_onion_payload = invalid_onion_payload_hu_conv;
57 internal long clone_ptr() {
58 long ret = bindings.FailureCode_clone_ptr(this.ptr);
64 * Creates a copy of the FailureCode
66 public FailureCode clone() {
67 long ret = bindings.FailureCode_clone(this.ptr);
69 if (ret >= 0 && ret <= 4096) { return null; }
70 org.ldk.structs.FailureCode ret_hu_conv = org.ldk.structs.FailureCode.constr_from_ptr(ret);
71 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(this); };
76 * Utility method to constructs a new TemporaryNodeFailure-variant FailureCode
78 public static FailureCode temporary_node_failure() {
79 long ret = bindings.FailureCode_temporary_node_failure();
80 if (ret >= 0 && ret <= 4096) { return null; }
81 org.ldk.structs.FailureCode ret_hu_conv = org.ldk.structs.FailureCode.constr_from_ptr(ret);
82 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
87 * Utility method to constructs a new RequiredNodeFeatureMissing-variant FailureCode
89 public static FailureCode required_node_feature_missing() {
90 long ret = bindings.FailureCode_required_node_feature_missing();
91 if (ret >= 0 && ret <= 4096) { return null; }
92 org.ldk.structs.FailureCode ret_hu_conv = org.ldk.structs.FailureCode.constr_from_ptr(ret);
93 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
98 * Utility method to constructs a new IncorrectOrUnknownPaymentDetails-variant FailureCode
100 public static FailureCode incorrect_or_unknown_payment_details() {
101 long ret = bindings.FailureCode_incorrect_or_unknown_payment_details();
102 if (ret >= 0 && ret <= 4096) { return null; }
103 org.ldk.structs.FailureCode ret_hu_conv = org.ldk.structs.FailureCode.constr_from_ptr(ret);
104 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };
109 * Utility method to constructs a new InvalidOnionPayload-variant FailureCode
111 public static FailureCode invalid_onion_payload(org.ldk.structs.Option_C2Tuple_u64u16ZZ a) {
112 long ret = bindings.FailureCode_invalid_onion_payload(a.ptr);
114 if (ret >= 0 && ret <= 4096) { return null; }
115 org.ldk.structs.FailureCode ret_hu_conv = org.ldk.structs.FailureCode.constr_from_ptr(ret);
116 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.AddLast(ret_hu_conv); };