3 import org.junit.jupiter.api.Test;
4 import org.ldk.impl.bindings;
5 import org.ldk.enums.*;
7 public class ManualMsgHandlingPeerTest {
9 void test_message_handler() {
10 long logger = bindings.LDKLogger_new((String arg)->{
11 System.out.println(arg);
13 long chan_handler = bindings.LDKChannelMessageHandler_new(new bindings.LDKChannelMessageHandler() {
15 public void handle_open_channel(byte[] their_node_id, long their_features, long msg) {
20 public void handle_accept_channel(byte[] their_node_id, long their_features, long msg) {
25 public void handle_funding_created(byte[] their_node_id, long msg) {
30 public void handle_funding_signed(byte[] their_node_id, long msg) {
35 public void handle_funding_locked(byte[] their_node_id, long msg) {
40 public void handle_shutdown(byte[] their_node_id, long msg) {
45 public void handle_closing_signed(byte[] their_node_id, long msg) {
50 public void handle_update_add_htlc(byte[] their_node_id, long msg) {
55 public void handle_update_fulfill_htlc(byte[] their_node_id, long msg) {
60 public void handle_update_fail_htlc(byte[] their_node_id, long msg) {
65 public void handle_update_fail_malformed_htlc(byte[] their_node_id, long msg) {
70 public void handle_commitment_signed(byte[] their_node_id, long msg) {
75 public void handle_revoke_and_ack(byte[] their_node_id, long msg) {
80 public void handle_update_fee(byte[] their_node_id, long msg) {
85 public void handle_announcement_signatures(byte[] their_node_id, long msg) {
90 public void peer_disconnected(byte[] their_node_id, boolean no_connection_possible) {
95 public void peer_connected(byte[] their_node_id, long msg) {
100 public void handle_channel_reestablish(byte[] their_node_id, long msg) {
105 public void handle_error(byte[] their_node_id, long msg) {
109 long route_handler = bindings.LDKRoutingMessageHandler_new(new bindings.LDKRoutingMessageHandler() {
110 @Override public long handle_node_announcement(long msg) {
113 @Override public long handle_channel_announcement(long msg) {
116 @Override public long handle_channel_update(long msg) {
119 @Override public void handle_htlc_fail_channel_update(long update) {
122 @Override public long get_next_channel_announcements(long starting_point, byte batch_amount) {
125 @Override public long get_next_node_announcements(byte[] starting_point, byte batch_amount) {
128 @Override public boolean should_request_full_sync(byte[] node_id) {
132 long message_handler = bindings.MessageHandler_new(chan_handler, route_handler);
133 byte[] our_node_secret = new byte[32];
134 byte[] random_data = new byte[32];
135 for (byte i = 0; i < 32; i++) { random_data[i] = i; our_node_secret[i] = (byte) (i ^ 0xff); }
137 long peer_manager = bindings.PeerManager_new(message_handler, our_node_secret, random_data, logger);
139 // Test Level_max() since its the only place we create a java object from a Rust-returned enum.
140 assert bindings.Level_max() == LDKLevel.LDKLevel_Trace;
142 // Note that we can't rely on finalizer order, so don't bother trying to rely on it here
143 bindings.Logger_free(logger);
144 bindings.ChannelMessageHandler_free(chan_handler);
145 bindings.RoutingMessageHandler_free(route_handler);
146 //bindings.MessageHandler_free(message_handler);
147 bindings.PeerManager_free(peer_manager);