• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/tcl-105/tcl_ext/tcllib/tcllib/modules/counter/

Lines Matching defs:counter

0 # counter.tcl --
10 # RCS: @(#) $Id: counter.tcl,v 1.23 2005/09/30 05:36:38 andreas_kupries Exp $
14 namespace eval ::counter {
16 # Variables of name counter::T-$tagname
17 # are created as arrays to support each counter.
45 # ::counter::init --
47 # Set up a counter.
50 # tag The identifier for the counter. Pass this to counter::count
51 # args option values pairs that define characteristics of the counter:
58 # Initializes state about a counter.
60 proc ::counter::init {tag args} {
61 upvar #0 counter::T-$tag counter
62 if {[info exists counter]} {
63 unset counter
65 set counter(N) 0 ;# Number of samples
66 set counter(total) 0
67 set counter(type) {}
69 # With an empty type the counter is a simple accumulator
71 # the args to determine what additional counter attributes
72 # we need to maintain in counter::count
86 upvar #0 counter::H-$tag histogram
87 upvar #0 counter::Hour-$tag hourhist
88 upvar #0 counter::Day-$tag dayhist
105 set counter(maxPerMinute) 0
106 set counter(maxPerHour) 0
107 set counter(maxPerDay) 0
153 after [expr {$secs * 1000}] [list counter::MergeHour $mergeInterval]
162 set counter(lastMinute) -1
167 set counter(bucketsize) 0
172 upvar #0 counter::H-$tag histogram
176 set counter(group) $value
181 upvar #0 counter::V-$tag vector
182 set counter(lastn) $value
183 set counter(index) 0
194 upvar #0 counter::H-$tag histogram
198 set counter(bucketsize) $value
199 set counter(mult) 1
202 upvar #0 counter::H-$tag histogram
206 set counter(bucketsize) $value
207 set counter(mult) 2
210 upvar #0 counter::H-$tag histogram
214 set counter(bucketsize) $value
215 set counter(mult) 10
218 upvar #0 counter::H-$tag histogram
222 set counter(bucketsize) $value
225 # Useful when disabling predefined -timehist or -group counter
236 lappend counter(type) $option
240 # Instead of supporting a counter that could have multiple attributes,
243 if {[llength $counter(type)] > 1} {
250 # ::counter::reset --
252 # Reset a counter.
255 # tag The identifier for the counter.
261 # Deletes the counter and calls counter::init again for it.
263 proc ::counter::reset {tag args} {
264 upvar #0 counter::T-$tag counter
269 switch -- $counter(type) {
274 upvar #0 counter::H-$tag histogram
278 set args [list -group $counter(group)]
281 upvar #0 counter::V-$tag vector
285 set args [list -lastn $counter(lastn)]
291 upvar #0 counter::H-$tag histogram
295 set args [list $counter(type) $counter(bucketsize)]
298 foreach h [list counter::H-$tag counter::Hour-$tag counter::Day-$tag] {
304 set args [list -timehist $counter::secsPerMinute]
308 unset counter
309 eval {counter::init $tag} $args
310 set counter(resetDate) [clock seconds]
314 # ::counter::count --
319 # tag The counter identifier.
329 proc ::counter::count {tag {delta 1} args} {
330 upvar #0 counter::T-$tag counter
331 set counter(total) [expr {$counter(total) + $delta}]
332 incr counter(N)
334 # Instead of supporting a counter that could have multiple attributes,
337 # foreach option $counter(type) {
338 switch -- $counter(type) {
340 # Simple counter
344 upvar #0 counter::H-$tag histogram
352 upvar #0 counter::V-$tag vector
353 set vector($counter(index)) $delta
354 set counter(index) [expr {($counter(index) +1)%$counter(lastn)}]
357 upvar #0 counter::H-$tag histogram
358 set bucket [expr {int($delta / $counter(bucketsize))}]
366 upvar #0 counter::H-$tag histogram
368 for {set max $counter(bucketsize)} {$delta > $max} \
369 {set max [expr {$max * $counter(mult)}]} {
378 upvar #0 counter::H-$tag histogram
379 set bucket [expr {int(log($delta)*$counter(bucketsize))}]
386 upvar #0 counter::H-$tag histogram
400 if {$minute != $counter(lastMinute)} {
402 for {set i [expr {$counter(lastMinute)+1}]} \
407 set counter(lastMinute) $minute
417 # ::counter::exists --
419 # Return true if the counter exists.
422 # tag The counter identifier.
430 proc ::counter::exists {tag} {
431 upvar #0 counter::T-$tag counter
432 return [info exists counter]
435 # ::counter::get --
440 # tag The counter identifier.
445 # With no args, just the counter value.
450 proc ::counter::get {tag {option -total} args} {
451 upvar #0 counter::T-$tag counter
454 return $counter(total)
457 return ::counter::T-$tag\(total)
460 return $counter(N)
463 if {$counter(N) == 0} {
466 return [expr {$counter(total) / double($counter(N))}]
470 if {$counter(type) != "-lastn"} {
473 upvar #0 counter::V-$tag vector
475 for {set i 0} {($i < $counter(N)) && ($i < $counter(lastn))} {incr i} {
485 upvar #0 counter::H-$tag histogram
498 if {$counter(type) == "-group"} {
510 return ::counter::H-$tag
513 upvar #0 counter::Hour-$tag histogram
521 return ::counter::Hour-$tag
524 upvar #0 counter::Day-$tag histogram
532 return ::counter::Day-$tag
535 return $counter(maxPerMinute)
538 return $counter(maxPerHour)
541 return $counter(maxPerDay)
544 if {[info exists counter(resetDate)]} {
545 return $counter(resetDate)
551 return [array get counter]
561 # ::counter::names --
569 # A list of counter tags.
574 proc ::counter::names {} {
576 foreach v [info vars ::counter::T-*] {
580 set v [string range $v [string length "::counter::T-"] end]
587 # ::counter::MergeHour --
602 proc ::counter::MergeHour {interval} {
609 after $interval [list counter::MergeHour $interval]
616 upvar #0 counter::T-$tag counter
617 upvar #0 counter::H-$tag histogram
618 upvar #0 counter::Hour-$tag hourhist
622 for {set i [expr {$counter(lastMinute)+1}]} {$i < 60} {incr i} {
625 set counter(lastMinute) -1
638 if {$perSec > $counter(maxPerMinute)} {
639 set counter(maxPerMinute) $perSec
644 counter::MergeDay
648 # ::counter::MergeDay --
663 proc ::counter::MergeDay {} {
671 # counter(day,$day) is the starting time for that day bucket
677 upvar #0 counter::T-$tag counter
678 upvar #0 counter::Day-$tag dayhist
679 upvar #0 counter::Hour-$tag hourhist
691 if {$perSec > $counter(maxPerHour)} {
692 set counter(maxPerHour) $perSec
696 if {$perSec > $counter(maxPerDay)} {
697 set counter(maxPerDay) $perSec
702 # ::counter::histHtmlDisplay --
707 # tag The counter tag
729 proc ::counter::histHtmlDisplay {tag args} {
731 append result [eval {counter::histHtmlDisplayRow $tag} $args]
736 # ::counter::histHtmlDisplayRow --
741 # See counter::histHtmlDisplay
750 proc ::counter::histHtmlDisplayRow {tag args} {
751 upvar #0 counter::T-$tag counter
778 counter::reset $tag
779 return "<!-- Reset $tag counter -->"
784 upvar #0 counter::H-$tag histogram
785 set histname counter::H-$tag
791 set periodMax $counter(maxPerMinute)
797 upvar #0 counter::Hour-$tag histogram
798 set histname counter::Hour-$tag
804 set periodMax $counter(maxPerHour)
813 upvar #0 counter::Day-$tag histogram
814 set histname counter::Day-$tag
820 set periodMax $counter(maxPerDay)
828 upvar #0 counter::H-$tag histogram
829 set histname counter::H-$tag
856 append result "<td>[html::font][format $options(-format) $counter(total)]</font></td></tr>\n"
923 set mode [expr {$counter(bucketsize) * $maxName}]
924 set first [expr {$counter(bucketsize) * [lindex $ix 0]}]
925 set last [expr {$counter(bucketsize) * [lindex $ix end]}]
928 append result "<td>[html::font][format $options(-format) [counter::get $tag -avg]]</font></td></tr>\n"
965 {counter::histHtmlDisplayBarChart $tag histogram $max $curIndex $time} \
976 # ::counter::histHtmlDisplayBarChart --
981 # tag The counter tag.
983 # max The maximum counter value in a histogram bucket.
994 proc ::counter::histHtmlDisplayBarChart {tag histVar max curIndex time args} {
995 upvar #0 counter::T-$tag counter
1044 if {$counter(type) != "-timehist"} {
1051 if {![info exists counter(mult)]} {
1052 set counter(mult) 1
1073 if {$counter(type) == "-histlog"} {
1074 if {[catch {expr {int(log($i) * $counter(bucketsize))}} x]} {
1079 set x [expr {$i * $counter(bucketsize) * $counter(mult)}]
1166 [expr {$options(-min) * $counter(bucketsize)}]\n"
1170 [expr {$options(-max) * $counter(bucketsize)}]\n"
1175 # ::counter::start --
1181 # tag The counter identifier.
1191 proc ::counter::start {tag instance} {
1192 upvar #0 counter::Time-$tag time
1194 # Here we turn it into a 31-bit counter because we only want
1200 # ::counter::stop --
1205 # tag The counter identifier.
1217 proc ::counter::stop {tag instance {func ::counter::Identity}} {
1218 upvar #0 counter::Time-$tag time
1228 # Microsecond counter wrapped.
1235 # It is quite possible that the millisecond counter is much
1240 counter::count $tag [$func [expr {$delMicros / 1000.0}]]
1242 counter::count $tag [$func $delSecond]
1246 # ::counter::Identity --
1261 proc ::counter::Identity {x} {
1265 package provide counter 2.0.4