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