proc stats:init {} { global stats_array global stats_urates global stats_drates array set stats_array "" stack set stats_array(rates) 144 0 stack set stats_urates 144 0 stack set stats_drates 144 0 } proc stack {action varname args} { upvar $varname stackvar switch $action { set { set stackvar "" for {set x 0} {$x<[lindex $args 0]} {incr x} {lappend stackvar [lindex $args 1]} } push { set stackvar [lrange $stackvar 1 end] lappend stackvar [lindex $args 0] } } } proc stats:refresh {} { global stats_array global stats_urates global stats_drates global torrent_control set totaldrate 0 set totalurate 0 foreach id $torrent_control(active) { torrent:stats $id set totaldrate [expr $totaldrate+[torrent:get $id drate]] set totalurate [expr $totalurate+[torrent:get $id urate]] } stack push stats_urates $totalurate stack push stats_drates $totaldrate } proc stats:buildimg {} { global conf source $conf(home)/libs/buildimg.dev } proc stats:buildimg1 {} { global stats_array conf set ratemax 1 foreach drate $stats_array(drates) {if $drate>$ratemax {set ratemax $drate}} foreach urate $stats_array(urates) {if $urate>$ratemax {set ratemax $urate}} set ratemax [expr round($ratemax)] set ratestep [expr 240.0/$ratemax] set timeint 5 set timeunit "Minutes" set fly [open "| $conf(flybin) -o $conf(flydir)/bandwidthmonitor.jpg" w] puts $fly "new" puts $fly "size 300,800" puts $fly "type jpg" puts $fly "fill 1,1,0,0,64" puts $fly "string 255,255,255,145,20,small,kB/sec" puts $fly "rotate 270" puts $fly "rect 40,20,760,260,0,192,192" puts $fly "string 255,255,255,12,15,small,$ratemax" puts $fly "string 255,255,255,12,250,small, 0" puts $fly "string 255,255,255,390,280,small,$timeunit" puts $fly "setstyle 0,0,64,0,0,64,0,0,64,0,192,192,0,192,192" for {set x 1} {$x<4} {incr x} { puts $fly "line 40,[expr 20+$x*60],760,[expr 20+$x*60],0,192,192" } for {set x 1} {$x<9} {incr x} { puts $fly "line [expr 40+$x*80],20,[expr 40+$x*80],260,0,192,192" puts $fly "string 255,255,255,[expr 35+$x*80],265,small,-[expr (9-$x)*$timeint]" } puts $fly "killstyle" set prevx 41; set prevy 259 for {set x 0} {$x<144} {incr x} { set rate [lindex $stats_array(drates) $x] set thisx [expr 41+($x*5)] if $drate>=0 { set thisy [expr round(259-($rate*$ratestep))] puts $fly "line $prevx,$prevy,$thisx,$thisy,0,192,0" } {set thisy 259} set prevx $thisx; set prevy $thisy } for {set x 0} {$x<144} {incr x} { set rate [lindex $stats_array(urates) $x] set thisx [expr 41+($x*5)] if $drate>=0 { set thisy [expr round(259-($rate*$ratestep))] puts $fly "line $prevx,$prevy,$thisx,$thisy,192,0,0" } {set thisy 259} set prevx $thisx; set prevy $thisy } close $fly } stats:init