X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FOffersMessageHandler.java;h=a0babba3c1a8ca4c8c174e1c2b52aa3fded025f9;hb=2f0e19ab23f28c5c1bc11dc6bff24e156da3ec01;hp=9b5553eb2749faedb05bf27224c59a3038730766;hpb=8fa2bcb208a51fa352d04981f1387d8bceced107;p=ldk-java diff --git a/src/main/java/org/ldk/structs/OffersMessageHandler.java b/src/main/java/org/ldk/structs/OffersMessageHandler.java index 9b5553eb..a0babba3 100644 --- a/src/main/java/org/ldk/structs/OffersMessageHandler.java +++ b/src/main/java/org/ldk/structs/OffersMessageHandler.java @@ -42,8 +42,19 @@ public class OffersMessageHandler extends CommonBase { /** * Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment, * or replying with an error. + * + * The returned [`OffersMessage`], if any, is enqueued to be sent by [`OnionMessenger`]. + * + * [`OnionMessenger`]: crate::onion_message::OnionMessenger */ Option_OffersMessageZ handle_message(OffersMessage message); + /** + * Releases any [`OffersMessage`]s that need to be sent. + * + * Typically, this is used for messages initiating a payment flow rather than in response to + * another message. The latter should use the return value of [`Self::handle_message`]. + */ + ThreeTuple_OffersMessageDestinationBlindedPathZ[] release_pending_messages(); } private static class LDKOffersMessageHandlerHolder { OffersMessageHandler held; } public static OffersMessageHandler new_impl(OffersMessageHandlerInterface arg) { @@ -58,12 +69,22 @@ public class OffersMessageHandler extends CommonBase { if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret); }; return result; } + @Override public long[] release_pending_messages() { + ThreeTuple_OffersMessageDestinationBlindedPathZ[] ret = arg.release_pending_messages(); + Reference.reachabilityFence(arg); + long[] result = ret != null ? Arrays.stream(ret).mapToLong(ret_conv_49 -> ret_conv_49 == null ? 0 : ret_conv_49.clone_ptr()).toArray() : null; + return result; + } }); return impl_holder.held; } /** * Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment, * or replying with an error. + * + * The returned [`OffersMessage`], if any, is enqueued to be sent by [`OnionMessenger`]. + * + * [`OnionMessenger`]: crate::onion_message::OnionMessenger */ public Option_OffersMessageZ handle_message(org.ldk.structs.OffersMessage message) { long ret = bindings.OffersMessageHandler_handle_message(this.ptr, message.ptr); @@ -76,4 +97,24 @@ public class OffersMessageHandler extends CommonBase { return ret_hu_conv; } + /** + * Releases any [`OffersMessage`]s that need to be sent. + * + * Typically, this is used for messages initiating a payment flow rather than in response to + * another message. The latter should use the return value of [`Self::handle_message`]. + */ + public ThreeTuple_OffersMessageDestinationBlindedPathZ[] release_pending_messages() { + long[] ret = bindings.OffersMessageHandler_release_pending_messages(this.ptr); + Reference.reachabilityFence(this); + int ret_conv_49_len = ret.length; + ThreeTuple_OffersMessageDestinationBlindedPathZ[] ret_conv_49_arr = new ThreeTuple_OffersMessageDestinationBlindedPathZ[ret_conv_49_len]; + for (int x = 0; x < ret_conv_49_len; x++) { + long ret_conv_49 = ret[x]; + ThreeTuple_OffersMessageDestinationBlindedPathZ ret_conv_49_hu_conv = new ThreeTuple_OffersMessageDestinationBlindedPathZ(null, ret_conv_49); + if (ret_conv_49_hu_conv != null) { ret_conv_49_hu_conv.ptrs_to.add(this); }; + ret_conv_49_arr[x] = ret_conv_49_hu_conv; + } + return ret_conv_49_arr; + } + }