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