c7bd3b685f215ce8377c6fe506a0f0b7a536d644
[ldk-java] / src / main / java / org / ldk / structs / RouteParameters.java
1 package org.ldk.structs;
2
3 import org.ldk.impl.bindings;
4 import org.ldk.enums.*;
5 import org.ldk.util.*;
6 import java.util.Arrays;
7 import java.lang.ref.Reference;
8 import javax.annotation.Nullable;
9
10
11 /**
12  * Parameters needed to find a [`Route`] for paying a [`Payee`].
13  * 
14  * Passed to [`find_route`] and also provided in [`Event::PaymentPathFailed`] for retrying a failed
15  * payment path.
16  * 
17  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
18  */
19 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
20 public class RouteParameters extends CommonBase {
21         RouteParameters(Object _dummy, long ptr) { super(ptr); }
22         @Override @SuppressWarnings("deprecation")
23         protected void finalize() throws Throwable {
24                 super.finalize();
25                 if (ptr != 0) { bindings.RouteParameters_free(ptr); }
26         }
27
28         /**
29          * The recipient of the failed payment path.
30          */
31         public Payee get_payee() {
32                 long ret = bindings.RouteParameters_get_payee(this.ptr);
33                 Reference.reachabilityFence(this);
34                 if (ret >= 0 && ret <= 4096) { return null; }
35                 Payee ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new Payee(null, ret); }
36                 ret_hu_conv.ptrs_to.add(this);
37                 return ret_hu_conv;
38         }
39
40         /**
41          * The recipient of the failed payment path.
42          */
43         public void set_payee(Payee val) {
44                 bindings.RouteParameters_set_payee(this.ptr, val == null ? 0 : val.ptr & ~1);
45                 Reference.reachabilityFence(this);
46                 Reference.reachabilityFence(val);
47         }
48
49         /**
50          * The amount in msats sent on the failed payment path.
51          */
52         public long get_final_value_msat() {
53                 long ret = bindings.RouteParameters_get_final_value_msat(this.ptr);
54                 Reference.reachabilityFence(this);
55                 return ret;
56         }
57
58         /**
59          * The amount in msats sent on the failed payment path.
60          */
61         public void set_final_value_msat(long val) {
62                 bindings.RouteParameters_set_final_value_msat(this.ptr, val);
63                 Reference.reachabilityFence(this);
64                 Reference.reachabilityFence(val);
65         }
66
67         /**
68          * The CLTV on the final hop of the failed payment path.
69          */
70         public int get_final_cltv_expiry_delta() {
71                 int ret = bindings.RouteParameters_get_final_cltv_expiry_delta(this.ptr);
72                 Reference.reachabilityFence(this);
73                 return ret;
74         }
75
76         /**
77          * The CLTV on the final hop of the failed payment path.
78          */
79         public void set_final_cltv_expiry_delta(int val) {
80                 bindings.RouteParameters_set_final_cltv_expiry_delta(this.ptr, val);
81                 Reference.reachabilityFence(this);
82                 Reference.reachabilityFence(val);
83         }
84
85         /**
86          * Constructs a new RouteParameters given each field
87          */
88         public static RouteParameters of(Payee payee_arg, long final_value_msat_arg, int final_cltv_expiry_delta_arg) {
89                 long ret = bindings.RouteParameters_new(payee_arg == null ? 0 : payee_arg.ptr & ~1, final_value_msat_arg, final_cltv_expiry_delta_arg);
90                 Reference.reachabilityFence(payee_arg);
91                 Reference.reachabilityFence(final_value_msat_arg);
92                 Reference.reachabilityFence(final_cltv_expiry_delta_arg);
93                 if (ret >= 0 && ret <= 4096) { return null; }
94                 RouteParameters ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new RouteParameters(null, ret); }
95                 ret_hu_conv.ptrs_to.add(ret_hu_conv);
96                 return ret_hu_conv;
97         }
98
99         long clone_ptr() {
100                 long ret = bindings.RouteParameters_clone_ptr(this.ptr);
101                 Reference.reachabilityFence(this);
102                 return ret;
103         }
104
105         /**
106          * Creates a copy of the RouteParameters
107          */
108         public RouteParameters clone() {
109                 long ret = bindings.RouteParameters_clone(this.ptr);
110                 Reference.reachabilityFence(this);
111                 if (ret >= 0 && ret <= 4096) { return null; }
112                 RouteParameters ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new RouteParameters(null, ret); }
113                 ret_hu_conv.ptrs_to.add(this);
114                 return ret_hu_conv;
115         }
116
117         /**
118          * Serialize the RouteParameters object into a byte array which can be read by RouteParameters_read
119          */
120         public byte[] write() {
121                 byte[] ret = bindings.RouteParameters_write(this.ptr);
122                 Reference.reachabilityFence(this);
123                 return ret;
124         }
125
126         /**
127          * Read a RouteParameters from a byte array, created by RouteParameters_write
128          */
129         public static Result_RouteParametersDecodeErrorZ read(byte[] ser) {
130                 long ret = bindings.RouteParameters_read(ser);
131                 Reference.reachabilityFence(ser);
132                 if (ret >= 0 && ret <= 4096) { return null; }
133                 Result_RouteParametersDecodeErrorZ ret_hu_conv = Result_RouteParametersDecodeErrorZ.constr_from_ptr(ret);
134                 return ret_hu_conv;
135         }
136
137 }