mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-21 08:04:26 +01:00
gossmap: add functions to map index back to node/chan.
Useful if you want to store per-chan or per-node side-data in an array. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -176,6 +176,23 @@ u32 gossmap_chan_idx(const struct gossmap *map, const struct gossmap_chan *chan)
|
||||
return chan - map->chan_arr;
|
||||
}
|
||||
|
||||
struct gossmap_node *gossmap_node_byidx(const struct gossmap *map, u32 idx)
|
||||
{
|
||||
assert(idx < gossmap_max_node_idx(map));
|
||||
if (map->node_arr[idx].chan_idxs == NULL)
|
||||
return NULL;
|
||||
return &map->node_arr[idx];
|
||||
}
|
||||
|
||||
struct gossmap_chan *gossmap_chan_byidx(const struct gossmap *map, u32 idx)
|
||||
{
|
||||
assert(idx < gossmap_max_chan_idx(map));
|
||||
|
||||
if (map->chan_arr[idx].plus_scid_off == 0)
|
||||
return NULL;
|
||||
return &map->chan_arr[idx];
|
||||
}
|
||||
|
||||
/* htable can't handle NULL or 1 values, so we add 2 */
|
||||
static struct gossmap_chan *ptrint2chan(const ptrint_t *pidx)
|
||||
{
|
||||
|
||||
@@ -90,6 +90,9 @@ void gossmap_remove_localmods(struct gossmap *map,
|
||||
u32 gossmap_node_idx(const struct gossmap *map, const struct gossmap_node *node);
|
||||
u32 gossmap_chan_idx(const struct gossmap *map, const struct gossmap_chan *chan);
|
||||
|
||||
struct gossmap_node *gossmap_node_byidx(const struct gossmap *map, u32 idx);
|
||||
struct gossmap_chan *gossmap_chan_byidx(const struct gossmap *map, u32 idx);
|
||||
|
||||
/* Every node_idx/chan_idx will be < these.
|
||||
* These values can change across calls to gossmap_check. */
|
||||
u32 gossmap_max_node_idx(const struct gossmap *map);
|
||||
|
||||
Reference in New Issue
Block a user