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

Function dijkstra_update

plugins/renepay/dijkstra.c:103–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

101}
102
103void dijkstra_update(struct dijkstra *dijkstra, u32 node_idx, s64 distance)
104{
105 assert(node_idx < dijkstra_maxsize(dijkstra));
106
107 if(!dijkstra->heapptr[node_idx])
108 {
109 // not in the heap
110 dijkstra_append(dijkstra, node_idx,distance);
111 global_dijkstra = dijkstra;
112 gheap_restore_heap_after_item_increase(
113 &dijkstra->gheap_ctx,
114 dijkstra->base,
115 dijkstra->heapsize,
116 dijkstra->heapptr[node_idx]
117 - dijkstra->base);
118 global_dijkstra = NULL;
119 return;
120 }
121
122 if(dijkstra->distance[node_idx] > distance)
123 {
124 // distance decrease
125 dijkstra->distance[node_idx] = distance;
126
127 global_dijkstra = dijkstra;
128 gheap_restore_heap_after_item_increase(
129 &dijkstra->gheap_ctx,
130 dijkstra->base,
131 dijkstra->heapsize,
132 dijkstra->heapptr[node_idx]
133 - dijkstra->base);
134 global_dijkstra = NULL;
135 }else
136 {
137 // distance increase
138 dijkstra->distance[node_idx] = distance;
139
140 global_dijkstra = dijkstra;
141 gheap_restore_heap_after_item_decrease(
142 &dijkstra->gheap_ctx,
143 dijkstra->base,
144 dijkstra->heapsize,
145 dijkstra->heapptr[node_idx]
146 - dijkstra->base);
147 global_dijkstra = NULL;
148
149 }
150 // assert(gheap_is_heap(&dijkstra->gheap_ctx,
151 // dijkstra->base,
152 // dijkstra_size()));
153}
154
155u32 dijkstra_top(const struct dijkstra *dijkstra)
156{

Callers 3

find_optimal_pathFunction · 0.70

Calls 2

dijkstra_maxsizeFunction · 0.70
dijkstra_appendFunction · 0.70

Tested by 2