MCPcopy Create free account
hub / github.com/ElementsProject/lightning / main

Function main

devtools/gossmap-compress.c:526–829  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

524}
525
526int main(int argc, char *argv[])
527{
528 int outfd;
529 const struct pubkey **node_ids;
530 bool print_nodes = false;
531
532 common_setup(argv[0]);
533 setup_locale();
534
535 node_ids = tal_arr(tmpctx, const struct pubkey *, 0);
536 opt_register_noarg("--verbose|-v", opt_add_one, &verbose,
537 "Print details (each additional gives more!).");
538 opt_register_arg("--node-map=num=<nodeid>", opt_node, NULL, &node_ids,
539 "Map node num to <nodeid> (decompress only)");
540 opt_register_noarg("--output-node-map", opt_set_bool, &print_nodes,
541 "Output nodenumber:nodeid:alias for each node (compress only)");
542 opt_register_noarg("--help|-h", opt_usage_and_exit,
543 "[decompress|compress] infile outfile\n"
544 "Compress or decompress a gossmap file",
545 "Print this message.");
546
547 opt_parse(&argc, argv, opt_log_stderr_exit);
548 if (argc != 4)
549 opt_usage_exit_fail("Needs 4 arguments");
550
551 outfd = open(argv[3], O_WRONLY|O_CREAT|O_TRUNC, 0666);
552 if (outfd < 0)
553 opt_usage_exit_fail(tal_fmt(tmpctx, "Cannot open %s for writing: %s",
554 argv[3], strerror(errno)));
555
556 if (streq(argv[1], "compress")) {
557 struct gossmap_node **nodes, *n;
558 size_t *node_to_compr_idx;
559 size_t node_count, channel_count;
560 struct gossmap_chan **chans, *c;
561 bool *dirs;
562 gzFile outf = gzdopen(outfd, "wb9");
563
564 struct gossmap *gossmap = gossmap_load(tmpctx, argv[2], NULL, NULL);
565 if (!gossmap)
566 opt_usage_exit_fail(tal_fmt(tmpctx, "Cannot open %s for reading: %s",
567 argv[2], strerror(errno)));
568
569 nodes = tal_arr(gossmap, struct gossmap_node *, gossmap_max_node_idx(gossmap));
570 for (node_count = 0, n = gossmap_first_node(gossmap);
571 n;
572 n = gossmap_next_node(gossmap, n), node_count++) {
573 nodes[node_count] = n;
574 }
575 tal_resize(&nodes, node_count);
576 if (verbose)
577 printf("%zu nodes\n", node_count);
578
579 /* nodes with most channels go first */
580 asort(nodes, tal_count(nodes), cmp_node_num_chans, NULL);
581
582 /* Create map of gossmap index to compression index */
583 node_to_compr_idx = tal_arr(nodes, size_t, gossmap_max_node_idx(gossmap));

Callers

nothing calls this directly

Calls 15

common_setupFunction · 0.85
setup_localeFunction · 0.85
opt_parseFunction · 0.85
opt_usage_exit_failFunction · 0.85
gossmap_max_node_idxFunction · 0.85
gossmap_first_nodeFunction · 0.85
gossmap_next_nodeFunction · 0.85
gossmap_node_idxFunction · 0.85
gossmap_node_get_idFunction · 0.85
fmt_node_idFunction · 0.85
get_aliasFunction · 0.85
gzwriteFunction · 0.85

Tested by

no test coverage detected