3 import org.junit.jupiter.api.Test;
4 import org.ldk.impl.bindings;
6 public class PeerTest {
8 void test_message_handler() {
9 long logger = bindings.LDKLogger_new((String arg)-> System.out.println(arg));
11 long fee_estimator = bindings.LDKFeeEstimator_new(new bindings.LDKFeeEstimator() {
13 public int get_est_sat_per_1000_weight(bindings.LDKConfirmationTarget confirmation_target) {
17 long tx_broadcaster = bindings.LDKBroadcasterInterface_new(new bindings.LDKBroadcasterInterface() {
19 public void broadcast_transaction(long tx) {
20 // We should broadcast
23 long chain_monitor = bindings.LDKManyChannelMonitor_new(new bindings.LDKManyChannelMonitor() {
25 public long add_monitor(long funding_txo, long monitor) {
30 public long update_monitor(long funding_txo, long monitor) {
35 public long get_and_clear_pending_monitor_events() {
39 byte[] key_seed = new byte[32];
40 for (byte i = 0; i < 32; i++) { key_seed[i] = i; }
41 long keys = bindings.KeysManager_new(key_seed, bindings.LDKNetwork.LDKNetwork_Bitcoin, System.currentTimeMillis() / 1000, (int)(System.currentTimeMillis() * 1000) & 0xffffffff);
42 long keys_interface = bindings.KeysManager_as_KeysInterface(keys);
43 long config = bindings.UserConfig_default();
44 long chan_manager = bindings.ChannelManager_new(bindings.LDKNetwork.LDKNetwork_Bitcoin, fee_estimator, chain_monitor, tx_broadcaster, logger, keys_interface, config, 1);
46 long chan_handler = bindings.ChannelManager_as_ChannelMessageHandler(chan_manager);
47 long chain_watch = bindings.LDKChainWatchInterface_new(new bindings.LDKChainWatchInterface() {
49 public void install_watch_tx(byte[] txid, long script_pub_key) {
54 public void install_watch_outpoint(long outpoint, long out_script) {
59 public void watch_all_txn() {
64 public long get_chain_utxo(long genesis_hash, long unspent_tx_output_identifier) {
69 public long filter_block(long block) {
74 public long reentered() {
78 long router = bindings.NetGraphMsgHandler_new(chain_watch, logger);
79 long route_handler = bindings.NetGraphMsgHandler_as_RoutingMessageHandler(router);
80 long message_handler = bindings.MessageHandler_new(chan_handler, route_handler);
81 long our_node_secret = bindings.LDKSecretKey_new(); //TODO: Need LDKSecretKey constructor
82 byte[] random_data = new byte[32];
83 for (byte i = 0; i < 32; i++) { random_data[i] = i; }
85 long peer_manager = bindings.PeerManager_new(message_handler, our_node_secret, random_data, logger);
87 // Note that we can't rely on finalizer order, so don't bother trying to rely on it here
88 bindings.Logger_free(logger);
89 bindings.FeeEstimator_free(fee_estimator);
90 bindings.BroadcasterInterface_free(tx_broadcaster);
91 bindings.ManyChannelMonitor_free(chain_monitor);
92 bindings.KeysManager_free(keys);
93 bindings.KeysInterface_free(keys_interface);
94 bindings.ChannelManager_free(chan_manager);
95 bindings.ChannelMessageHandler_free(chan_handler);
96 bindings.ChainWatchInterface_free(chain_watch);
97 bindings.NetGraphMsgHandler_free(router);
98 bindings.RoutingMessageHandler_free(route_handler);
99 //bindings.MessageHandler_free(message_handler);
100 bindings.PeerManager_free(peer_manager);