public PeerManager peer_manager = null;
/**
* A NioPeerHandler which manages a background thread to handle socket events and pass them to the peer_manager.
- *
- * This is `null` until `chain_sync_completed` is called.
+ *
+ * This is `null` until `chain_sync_completed` is called.
*/
public NioPeerHandler nio_peer_handler = null;
private final Logger logger;
private final EntropySource entropy_source;
private final NodeSigner node_signer;
+ private final Router router;
/**
* Exposes the `ProbabilisticScorer` wrapped inside a lock. Don't forget to `close` this lock when you're done with
this.scorer = MultiThreadedLockableScore.of(this.prob_scorer.as_Score());
assert(scoring_fee_params != null);
- DefaultRouter default_router = DefaultRouter.of(this.net_graph, logger, entropy_source.get_secure_random_bytes(), scorer.as_LockableScore(), scoring_fee_params);
- Router router;
+ DefaultRouter default_router = DefaultRouter.of(this.net_graph, logger, entropy_source, scorer.as_LockableScore(), scoring_fee_params);
if (router_wrapper != null) {
router = Router.new_impl(new Router.RouterInterface() {
- @Override public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
+ @Override
+ public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
return router_wrapper.find_route(payer, route_params, first_hops, inflight_htlcs, null, null, default_router);
}
- @Override public Result_RouteLightningErrorZ find_route_with_id(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs, byte[] payment_hash, byte[] payment_id) {
+
+ @Override
+ public Result_RouteLightningErrorZ find_route_with_id(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs, byte[] payment_hash, byte[] payment_id) {
return router_wrapper.find_route(payer, route_params, first_hops, inflight_htlcs, payment_hash, payment_id, default_router);
}
+
+ @Override
+ public Result_CVec_BlindedPaymentPathZNoneZ create_blinded_payment_paths(byte[] recipient, ChannelDetails[] first_hops, ReceiveTlvs tlvs, long amount_msats) {
+ return default_router.as_Router().create_blinded_payment_paths(recipient, first_hops, tlvs, amount_msats);
+ }
+ }, new MessageRouter.MessageRouterInterface() {
+ @Override public Result_OnionMessagePathNoneZ find_path(byte[] sender, byte[][] peers, Destination destination) {
+ return default_router.as_MessageRouter().find_path(sender, peers, destination);
+ }
+
+ @Override
+ public Result_CVec_BlindedMessagePathZNoneZ create_blinded_paths(byte[] recipient, MessageContext context, byte[][] peers) {
+ return default_router.as_MessageRouter().create_blinded_paths(recipient, context, peers);
+ }
+
+ @Override
+ public Result_CVec_BlindedMessagePathZNoneZ create_compact_blinded_paths(byte[] recipient, MessageContext context, MessageForwardNode[] peers) {
+ return default_router.as_MessageRouter().create_compact_blinded_paths(recipient, context, peers);
+ }
});
} else {
router = default_router.as_Router();
this.logger = logger;
if (filter != null) {
for (ChannelMonitor monitor : monitors) {
- monitor.load_outputs_to_watch(filter);
+ monitor.load_outputs_to_watch(filter, logger);
}
}
}
this.scorer = MultiThreadedLockableScore.of(this.prob_scorer.as_Score());
assert(scoring_fee_params != null);
- DefaultRouter default_router = DefaultRouter.of(this.net_graph, logger, entropy_source.get_secure_random_bytes(), scorer.as_LockableScore(), scoring_fee_params);
- Router router;
+ DefaultRouter default_router = DefaultRouter.of(this.net_graph, logger, entropy_source, scorer.as_LockableScore(), scoring_fee_params);
if (router_wrapper != null) {
router = Router.new_impl(new Router.RouterInterface() {
@Override public Result_RouteLightningErrorZ find_route(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs) {
@Override public Result_RouteLightningErrorZ find_route_with_id(byte[] payer, RouteParameters route_params, ChannelDetails[] first_hops, InFlightHtlcs inflight_htlcs, byte[] payment_hash, byte[] payment_id) {
return router_wrapper.find_route(payer, route_params, first_hops, inflight_htlcs, payment_hash, payment_id, default_router);
}
+
+ @Override
+ public Result_CVec_BlindedPaymentPathZNoneZ create_blinded_payment_paths(byte[] recipient, ChannelDetails[] first_hops, ReceiveTlvs tlvs, long amount_msats) {
+ return default_router.as_Router().create_blinded_payment_paths(recipient, first_hops, tlvs, amount_msats);
+ }
+ }, new MessageRouter.MessageRouterInterface() {
+ @Override public Result_OnionMessagePathNoneZ find_path(byte[] sender, byte[][] peers, Destination destination) {
+ return default_router.as_MessageRouter().find_path(sender, peers, destination);
+ }
+
+ @Override
+ public Result_CVec_BlindedMessagePathZNoneZ create_blinded_paths(byte[] recipient, MessageContext context, byte[][] peers) {
+ return default_router.as_MessageRouter().create_blinded_paths(recipient, context, peers);
+ }
+
+ @Override
+ public Result_CVec_BlindedMessagePathZNoneZ create_compact_blinded_paths(byte[] recipient, MessageContext context, MessageForwardNode[] peers) {
+ return default_router.as_MessageRouter().create_compact_blinded_paths(recipient, context, peers);
+ }
});
} else {
router = default_router.as_Router();
* a background thread is started which will automatically call these methods for you when events occur.
*/
public interface EventHandler {
- void handle_event(Event events);
+ Result_NoneReplayEventZ handle_event(Event events);
void persist_manager(byte[] channel_manager_bytes);
void persist_network_graph(byte[] network_graph);
void persist_scorer(byte[] scorer_bytes);
routing_msg_handler = graph_msg_handler.as_RoutingMessageHandler();
else
routing_msg_handler = ignoring_handler.as_RoutingMessageHandler();
+ OnionMessenger messenger = OnionMessenger.of(this.entropy_source, this.node_signer, this.logger,
+ this.channel_manager.as_NodeIdLookUp(), this.router.get_message_router(),
+ channel_manager.as_OffersMessageHandler(), IgnoringMessageHandler.of().as_AsyncPaymentsMessageHandler(),
+ IgnoringMessageHandler.of().as_CustomOnionMessageHandler());
this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(),
- routing_msg_handler, ignoring_handler.as_OnionMessageHandler(),
+ routing_msg_handler, messenger.as_OnionMessageHandler(),
ignoring_handler.as_CustomMessageHandler(), (int)(System.currentTimeMillis() / 1000),
this.entropy_source.get_secure_random_bytes(), logger, this.node_signer);
event_handler.persist_scorer(scorer.write());
return Result_NoneIOErrorZ.ok();
}
- }), ldk_handler, this.chain_monitor, this.channel_manager, gossip_sync, peer_manager, this.logger, writeable_score);
+ }), ldk_handler, this.chain_monitor, this.channel_manager, messenger, gossip_sync, peer_manager, this.logger, writeable_score);
}
/**