Skip to content

Commit f8ba1a1

Browse files
committed
plugins/askrene: extract apply_layers into its own function.
Simple refactoring. Stolen entirely from Eduardo. Signed-off-by: Rusty Russell <[email protected]>
1 parent 663dcbe commit f8ba1a1

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

plugins/askrene/askrene.c

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,39 @@ struct getroutes_info {
342342
struct layer *local_layer;
343343
};
344344

345+
static void apply_layers(struct askrene *askrene, struct route_query *rq,
346+
const struct node_id *source,
347+
struct amount_msat amount,
348+
struct gossmap_localmods *localmods,
349+
const char **layers,
350+
const struct layer *local_layer)
351+
{
352+
/* Layers must exist, but might be special ones! */
353+
for (size_t i = 0; i < tal_count(layers); i++) {
354+
const struct layer *l = find_layer(askrene, layers[i]);
355+
if (!l) {
356+
if (streq(layers[i], "auto.localchans")) {
357+
plugin_log(rq->plugin, LOG_DBG, "Adding auto.localchans");
358+
l = local_layer;
359+
} else if (streq(layers[i], "auto.no_mpp_support")) {
360+
plugin_log(rq->plugin, LOG_DBG, "Adding auto.no_mpp_support, sorry");
361+
l = remove_small_channel_layer(layers, askrene, amount, localmods);
362+
} else {
363+
assert(streq(layers[i], "auto.sourcefree"));
364+
plugin_log(rq->plugin, LOG_DBG, "Adding auto.sourcefree");
365+
l = source_free_layer(layers, askrene, source, localmods);
366+
}
367+
}
368+
369+
tal_arr_expand(&rq->layers, l);
370+
/* FIXME: Implement localmods_merge, and cache this in layer? */
371+
layer_add_localmods(l, rq->gossmap, localmods);
372+
373+
/* Clear any entries in capacities array if we
374+
* override them (incl local channels) */
375+
layer_clear_overridden_capacities(l, askrene->gossmap, rq->capacities);
376+
}
377+
}
345378
/* Returns an error message, or sets *routes */
346379
static const char *get_routes(const tal_t *ctx,
347380
struct command *cmd,
@@ -382,31 +415,7 @@ static const char *get_routes(const tal_t *ctx,
382415
rq->capacities = tal_dup_talarr(rq, fp16_t, askrene->capacities);
383416
rq->additional_costs = additional_costs;
384417

385-
/* Layers must exist, but might be special ones! */
386-
for (size_t i = 0; i < tal_count(layers); i++) {
387-
const struct layer *l = find_layer(askrene, layers[i]);
388-
if (!l) {
389-
if (streq(layers[i], "auto.localchans")) {
390-
plugin_log(rq->plugin, LOG_DBG, "Adding auto.localchans");
391-
l = local_layer;
392-
} else if (streq(layers[i], "auto.no_mpp_support")) {
393-
plugin_log(rq->plugin, LOG_DBG, "Adding auto.no_mpp_support, sorry");
394-
l = remove_small_channel_layer(layers, askrene, amount, localmods);
395-
} else {
396-
assert(streq(layers[i], "auto.sourcefree"));
397-
plugin_log(rq->plugin, LOG_DBG, "Adding auto.sourcefree");
398-
l = source_free_layer(layers, askrene, source, localmods);
399-
}
400-
}
401-
402-
tal_arr_expand(&rq->layers, l);
403-
/* FIXME: Implement localmods_merge, and cache this in layer? */
404-
layer_add_localmods(l, rq->gossmap, localmods);
405-
406-
/* Clear any entries in capacities array if we
407-
* override them (incl local channels) */
408-
layer_clear_overridden_capacities(l, askrene->gossmap, rq->capacities);
409-
}
418+
apply_layers(askrene, rq, source, amount, localmods, layers, local_layer);
410419

411420
/* Clear scids with reservations, too, so we don't have to look up
412421
* all the time! */

0 commit comments

Comments
 (0)