1 package org.ldk.structs;
3 import org.ldk.impl.bindings;
4 import org.ldk.enums.*;
6 import java.util.Arrays;
9 * Trait which handles persisting a [`ChannelManager`] to disk.
11 * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
13 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
14 public class ChannelManagerPersister extends CommonBase {
15 final bindings.LDKChannelManagerPersister bindings_instance;
16 ChannelManagerPersister(Object _dummy, long ptr) { super(ptr); bindings_instance = null; }
17 private ChannelManagerPersister(bindings.LDKChannelManagerPersister arg) {
18 super(bindings.LDKChannelManagerPersister_new(arg));
19 this.ptrs_to.add(arg);
20 this.bindings_instance = arg;
22 @Override @SuppressWarnings("deprecation")
23 protected void finalize() throws Throwable {
24 if (ptr != 0) { bindings.ChannelManagerPersister_free(ptr); } super.finalize();
27 public static interface ChannelManagerPersisterInterface {
29 * Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
30 * (which will cause the [`BackgroundProcessor`] which called this method to exit.
32 * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
34 Result_NoneErrorZ persist_manager(ChannelManager channel_manager);
36 private static class LDKChannelManagerPersisterHolder { ChannelManagerPersister held; }
37 public static ChannelManagerPersister new_impl(ChannelManagerPersisterInterface arg) {
38 final LDKChannelManagerPersisterHolder impl_holder = new LDKChannelManagerPersisterHolder();
39 impl_holder.held = new ChannelManagerPersister(new bindings.LDKChannelManagerPersister() {
40 @Override public long persist_manager(long channel_manager) {
41 ChannelManager channel_manager_hu_conv = new ChannelManager(null, channel_manager);
42 Result_NoneErrorZ ret = arg.persist_manager(channel_manager_hu_conv);
43 long result = ret != null ? ret.ptr : 0;
47 return impl_holder.held;
50 * Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
51 * (which will cause the [`BackgroundProcessor`] which called this method to exit.
53 * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
55 public Result_NoneErrorZ persist_manager(ChannelManager channel_manager) {
56 long ret = bindings.ChannelManagerPersister_persist_manager(this.ptr, channel_manager == null ? 0 : channel_manager.ptr & ~1);
57 Result_NoneErrorZ ret_hu_conv = Result_NoneErrorZ.constr_from_ptr(ret);
58 this.ptrs_to.add(channel_manager);