1@startuml
2
3title Activity diagram sbws bw_torflow_scale
4
5start
6'bw_lines: the relays' raw measurements
7:mu = mean([l.bw_mean for l in bw_lines]);
8:muf = mean([l.bw_filt for l in bw_lines]);
9:sum_bw = 0;
10while (for l in bw_lines?)
11    :bw_obs;
12    :desc_bw = min(desc_bw_obs, l.desc_bw_bur, l.desc_bw_avg);
13    :ratio_stream = l.bw_mean / mu;
14    :ratio_stream_filtered = l.bw_filt / muf;
15    :ratio = max(ratio_stream, ratio_stream_filtered);
16    :l.bw = ratio * desc_bw;
17    if (router_statuses_d?) then (yes)
18        if (l.node_id in router_statuses_d?) then (yes)
19            :sum_bw += l.bw;
20        endif
21    else (no)
22        :sum_bw += l.bw;
23    endif
24endwhile
25:hlimit = sum_bw * cap;
26while (for l in bw_lines?)
27    :bw_scaled = min(hlimit, l.bw);
28    :l.bw = kb_round_x_sig_dig(bw_scaled, digits=num_round_dig);
29endwhile
30:return sorted(bw_lines_tf, key=lambda x: x.bw, reverse=reverse);
31stop
32
33footer last updated 2021-01-08
34@enduml
35