1 package org.ldk.structs;
3 import org.ldk.impl.bindings;
4 import org.ldk.enums.*;
6 import java.util.Arrays;
7 import java.lang.ref.Reference;
8 import javax.annotation.Nullable;
12 * The contents of an [`OnionMessage`] as read from the wire.
14 * [`OnionMessage`]: crate::ln::msgs::OnionMessage
16 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
17 public class ParsedOnionMessageContents extends CommonBase {
18 private ParsedOnionMessageContents(Object _dummy, long ptr) { super(ptr); }
19 @Override @SuppressWarnings("deprecation")
20 protected void finalize() throws Throwable {
22 if (ptr != 0) { bindings.ParsedOnionMessageContents_free(ptr); }
24 static ParsedOnionMessageContents constr_from_ptr(long ptr) {
25 bindings.LDKParsedOnionMessageContents raw_val = bindings.LDKParsedOnionMessageContents_ref_from_ptr(ptr);
26 if (raw_val.getClass() == bindings.LDKParsedOnionMessageContents.Offers.class) {
27 return new Offers(ptr, (bindings.LDKParsedOnionMessageContents.Offers)raw_val);
29 if (raw_val.getClass() == bindings.LDKParsedOnionMessageContents.Custom.class) {
30 return new Custom(ptr, (bindings.LDKParsedOnionMessageContents.Custom)raw_val);
32 assert false; return null; // Unreachable without extending the (internal) bindings interface
36 * A message related to BOLT 12 Offers.
38 public final static class Offers extends ParsedOnionMessageContents {
39 public final org.ldk.structs.OffersMessage offers;
40 private Offers(long ptr, bindings.LDKParsedOnionMessageContents.Offers obj) {
42 long offers = obj.offers;
43 org.ldk.structs.OffersMessage offers_hu_conv = org.ldk.structs.OffersMessage.constr_from_ptr(offers);
44 if (offers_hu_conv != null) { offers_hu_conv.ptrs_to.add(this); };
45 this.offers = offers_hu_conv;
49 * A custom onion message specified by the user.
51 public final static class Custom extends ParsedOnionMessageContents {
52 public final org.ldk.structs.OnionMessageContents custom;
53 private Custom(long ptr, bindings.LDKParsedOnionMessageContents.Custom obj) {
55 long custom = obj.custom;
56 OnionMessageContents ret_hu_conv = new OnionMessageContents(null, custom);
57 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
58 this.custom = ret_hu_conv;
62 long ret = bindings.ParsedOnionMessageContents_clone_ptr(this.ptr);
63 Reference.reachabilityFence(this);
68 * Creates a copy of the ParsedOnionMessageContents
70 public ParsedOnionMessageContents clone() {
71 long ret = bindings.ParsedOnionMessageContents_clone(this.ptr);
72 Reference.reachabilityFence(this);
73 if (ret >= 0 && ret <= 4096) { return null; }
74 org.ldk.structs.ParsedOnionMessageContents ret_hu_conv = org.ldk.structs.ParsedOnionMessageContents.constr_from_ptr(ret);
75 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
80 * Utility method to constructs a new Offers-variant ParsedOnionMessageContents
82 public static ParsedOnionMessageContents offers(org.ldk.structs.OffersMessage a) {
83 long ret = bindings.ParsedOnionMessageContents_offers(a.ptr);
84 Reference.reachabilityFence(a);
85 if (ret >= 0 && ret <= 4096) { return null; }
86 org.ldk.structs.ParsedOnionMessageContents ret_hu_conv = org.ldk.structs.ParsedOnionMessageContents.constr_from_ptr(ret);
87 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
88 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); };
93 * Utility method to constructs a new Custom-variant ParsedOnionMessageContents
95 public static ParsedOnionMessageContents custom(org.ldk.structs.OnionMessageContents a) {
96 long ret = bindings.ParsedOnionMessageContents_custom(a.ptr);
97 Reference.reachabilityFence(a);
98 if (ret >= 0 && ret <= 4096) { return null; }
99 org.ldk.structs.ParsedOnionMessageContents ret_hu_conv = org.ldk.structs.ParsedOnionMessageContents.constr_from_ptr(ret);
100 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(ret_hu_conv); };
101 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(a); };
106 * Constructs a new OnionMessageContents which calls the relevant methods on this_arg.
107 * This copies the `inner` pointer in this_arg and thus the returned OnionMessageContents must be freed before this_arg is
109 public OnionMessageContents as_OnionMessageContents() {
110 long ret = bindings.ParsedOnionMessageContents_as_OnionMessageContents(this.ptr);
111 Reference.reachabilityFence(this);
112 if (ret >= 0 && ret <= 4096) { return null; }
113 OnionMessageContents ret_hu_conv = new OnionMessageContents(null, ret);
114 if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
119 * Serialize the ParsedOnionMessageContents object into a byte array which can be read by ParsedOnionMessageContents_read
121 public byte[] write() {
122 byte[] ret = bindings.ParsedOnionMessageContents_write(this.ptr);
123 Reference.reachabilityFence(this);