mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-21 16:14:23 +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;
|
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 */
|
/* htable can't handle NULL or 1 values, so we add 2 */
|
||||||
static struct gossmap_chan *ptrint2chan(const ptrint_t *pidx)
|
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_node_idx(const struct gossmap *map, const struct gossmap_node *node);
|
||||||
u32 gossmap_chan_idx(const struct gossmap *map, const struct gossmap_chan *chan);
|
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.
|
/* Every node_idx/chan_idx will be < these.
|
||||||
* These values can change across calls to gossmap_check. */
|
* These values can change across calls to gossmap_check. */
|
||||||
u32 gossmap_max_node_idx(const struct gossmap *map);
|
u32 gossmap_max_node_idx(const struct gossmap *map);
|
||||||
|
|||||||
Reference in New Issue
Block a user