X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fbatteries%2FChannelManagerConstructor.java;h=4f591c11956fa54a6839aae57f444a40f522b54d;hb=7d6be8a5ef72a4ebfe07660cce55f43f6cc30b80;hp=da5e3fb9c6f3bf9c2ab33200d7b1e80df5bfc5d3;hpb=c1894f9d32ddea3884bda17c1a9964fa5412e28e;p=ldk-java diff --git a/src/main/java/org/ldk/batteries/ChannelManagerConstructor.java b/src/main/java/org/ldk/batteries/ChannelManagerConstructor.java index da5e3fb9..4f591c11 100644 --- a/src/main/java/org/ldk/batteries/ChannelManagerConstructor.java +++ b/src/main/java/org/ldk/batteries/ChannelManagerConstructor.java @@ -1,6 +1,6 @@ package org.ldk.batteries; -import org.jetbrains.annotations.Nullable; +import javax.annotation.Nullable; import org.ldk.enums.Network; import org.ldk.structs.*; import org.ldk.util.TwoTuple; @@ -50,6 +50,8 @@ public class ChannelManagerConstructor { private final Logger logger; + public final @Nullable NetGraphMsgHandler router; + /** * Deserializes a channel manager and a set of channel monitors from the given serialized copies and interface implementations * @@ -61,6 +63,7 @@ public class ChannelManagerConstructor { KeysInterface keys_interface, FeeEstimator fee_estimator, ChainMonitor chain_monitor, @Nullable Filter filter, @Nullable NetGraphMsgHandler router, BroadcasterInterface tx_broadcaster, Logger logger) throws InvalidSerializedDataException { + final IgnoringMessageHandler no_custom_messages = IgnoringMessageHandler.of(); final ChannelMonitor[] monitors = new ChannelMonitor[channel_monitors_serialized.length]; this.channel_monitors = new TwoTuple[monitors.length]; for (int i = 0; i < monitors.length; i++) { @@ -80,12 +83,15 @@ public class ChannelManagerConstructor { this.channel_manager = ((Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK)res).res.b; this.channel_manager_latest_block_hash = ((Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK)res).res.a; this.chain_monitor = chain_monitor; + this.router = router; this.logger = logger; byte[] random_data = keys_interface.get_secure_random_bytes(); if (router != null) { - this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), router.as_RoutingMessageHandler(), keys_interface.get_node_secret(), random_data, logger); + this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), router.as_RoutingMessageHandler(), + keys_interface.get_node_secret(), random_data, logger, no_custom_messages.as_CustomMessageHandler()); } else { - this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), (IgnoringMessageHandler.of()).as_RoutingMessageHandler(), keys_interface.get_node_secret(), random_data, logger); + this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), (IgnoringMessageHandler.of()).as_RoutingMessageHandler(), + keys_interface.get_node_secret(), random_data, logger, no_custom_messages.as_CustomMessageHandler()); } NioPeerHandler nio_peer_handler = null; try { @@ -108,18 +114,22 @@ public class ChannelManagerConstructor { KeysInterface keys_interface, FeeEstimator fee_estimator, ChainMonitor chain_monitor, @Nullable NetGraphMsgHandler router, BroadcasterInterface tx_broadcaster, Logger logger) { + final IgnoringMessageHandler no_custom_messages = IgnoringMessageHandler.of(); channel_monitors = new TwoTuple[0]; channel_manager_latest_block_hash = null; this.chain_monitor = chain_monitor; + this.router = router; BestBlock block = BestBlock.of(current_blockchain_tip_hash, current_blockchain_tip_height); ChainParameters params = ChainParameters.of(network, block); channel_manager = ChannelManager.of(fee_estimator, chain_monitor.as_Watch(), tx_broadcaster, logger, keys_interface, config, params); this.logger = logger; byte[] random_data = keys_interface.get_secure_random_bytes(); if (router != null) { - this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), router.as_RoutingMessageHandler(), keys_interface.get_node_secret(), random_data, logger); + this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), router.as_RoutingMessageHandler(), + keys_interface.get_node_secret(), random_data, logger, no_custom_messages.as_CustomMessageHandler()); } else { - this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), (IgnoringMessageHandler.of()).as_RoutingMessageHandler(), keys_interface.get_node_secret(), random_data, logger); + this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(), (IgnoringMessageHandler.of()).as_RoutingMessageHandler(), + keys_interface.get_node_secret(), random_data, logger, no_custom_messages.as_CustomMessageHandler()); } NioPeerHandler nio_peer_handler = null; try { @@ -134,7 +144,7 @@ public class ChannelManagerConstructor { * Abstract interface which should handle Events and persist the ChannelManager. When you call chain_sync_completed * a background thread is started which will automatically call these methods for you when events occur. */ - public interface ChannelManagerPersister { + public interface EventHandler { void handle_event(Event events); void persist_manager(byte[] channel_manager_bytes); } @@ -146,18 +156,18 @@ public class ChannelManagerConstructor { * ChannelManager are processed as normal. * * This also spawns a background thread which will call the appropriate methods on the provided - * ChannelManagerPersister as required. + * EventHandler as required. */ - public void chain_sync_completed(ChannelManagerPersister persister) { + public void chain_sync_completed(EventHandler event_handler) { if (background_processor != null) { return; } for (TwoTuple monitor: channel_monitors) { this.chain_monitor.as_Watch().watch_channel(monitor.a.get_funding_txo().a, monitor.a); } background_processor = BackgroundProcessor.start(org.ldk.structs.ChannelManagerPersister.new_impl(channel_manager -> { - persister.persist_manager(channel_manager.write()); + event_handler.persist_manager(channel_manager.write()); return Result_NoneErrorZ.ok(); - }), EventHandler.new_impl(persister::handle_event), - this.chain_monitor, this.channel_manager, this.peer_manager, this.logger); + }), org.ldk.structs.EventHandler.new_impl(event_handler::handle_event), + this.chain_monitor, this.channel_manager, this.router, this.peer_manager, this.logger); } /**