648823106a4e607e1f169366b3259b9ed73fea89
[ldk-java] / src / main / java / org / ldk / structs / Filter.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
8 @SuppressWarnings("unchecked") // We correctly assign various generic arrays
9 public class Filter extends CommonBase {
10         final bindings.LDKFilter bindings_instance;
11         Filter(Object _dummy, long ptr) { super(ptr); bindings_instance = null; }
12         private Filter(bindings.LDKFilter arg) {
13                 super(bindings.LDKFilter_new(arg));
14                 this.ptrs_to.add(arg);
15                 this.bindings_instance = arg;
16         }
17         @Override @SuppressWarnings("deprecation")
18         protected void finalize() throws Throwable {
19                 if (ptr != 0) { bindings.Filter_free(ptr); } super.finalize();
20         }
21
22         public static interface FilterInterface {
23                 void register_tx(byte[] txid, byte[] script_pubkey);
24                 void register_output(OutPoint outpoint, byte[] script_pubkey);
25         }
26         private static class LDKFilterHolder { Filter held; }
27         public static Filter new_impl(FilterInterface arg) {
28                 final LDKFilterHolder impl_holder = new LDKFilterHolder();
29                 impl_holder.held = new Filter(new bindings.LDKFilter() {
30                         @Override public void register_tx(byte[] txid, byte[] script_pubkey) {
31                                 arg.register_tx(txid, script_pubkey);
32                         }
33                         @Override public void register_output(long outpoint, byte[] script_pubkey) {
34                                 OutPoint outpoint_hu_conv = new OutPoint(null, outpoint);
35                                 arg.register_output(outpoint_hu_conv, script_pubkey);
36                         }
37                 });
38                 return impl_holder.held;
39         }
40         public void register_tx(byte[] txid, byte[] script_pubkey) {
41                 bindings.Filter_register_tx(this.ptr, txid, script_pubkey);
42         }
43
44         public void register_output(OutPoint outpoint, byte[] script_pubkey) {
45                 bindings.Filter_register_output(this.ptr, outpoint == null ? 0 : outpoint.ptr & ~1, script_pubkey);
46                 this.ptrs_to.add(outpoint);
47         }
48
49 }