+ this.entropy_source = entropy_source;
+ this.node_signer = node_signer;
+
+ Result_NetworkGraphDecodeErrorZ graph_res = NetworkGraph.read(net_graph_serialized, logger);
+ if (!graph_res.is_ok()) {
+ throw new InvalidSerializedDataException("Serialized Network Graph was corrupt");
+ }
+ this.net_graph = ((Result_NetworkGraphDecodeErrorZ.Result_NetworkGraphDecodeErrorZ_OK)graph_res).res;
+ assert(scoring_decay_params != null);
+ assert(probabilistic_scorer_bytes != null);
+ Result_ProbabilisticScorerDecodeErrorZ scorer_res = ProbabilisticScorer.read(probabilistic_scorer_bytes, scoring_decay_params, net_graph, logger);
+ if (!scorer_res.is_ok()) {
+ throw new InvalidSerializedDataException("Serialized ProbabilisticScorer was corrupt");
+ }
+ this.prob_scorer = ((Result_ProbabilisticScorerDecodeErrorZ.Result_ProbabilisticScorerDecodeErrorZ_OK)scorer_res).res;
+ 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;
+ 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) {
+ 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) {
+ return router_wrapper.find_route(payer, route_params, first_hops, inflight_htlcs, payment_hash, payment_id, default_router);
+ }
+ });
+ } else {
+ router = default_router.as_Router();
+ }
+