-proc out_restart {} {
- out__vars
-
- set now [clock seconds]
- incr out_creditms [expr {($now - $out_creditat) * 1000}]
- set out_creditat $now
- if {$out_creditms > $out_maxburst*$out_interval} {
- set out_creditms [expr {$out_maxburst*$out_interval}]
- }
- out_runqueue $now
-}
-
-proc out_runqueue {now} {
- global sock
- out__vars
-
- while {[llength $out_queue] && $out_creditms >= $out_interval} {
-#puts rq>$now|$out_creditat|$out_creditms|[llength $out_queue]<
- manyset [lindex $out_queue 0] orgwhen msg
- set out_queue [lrange $out_queue 1 end]
- if {[llength $out_queue]} {
- append orgwhen "+[expr {$now - $orgwhen}]"
- append orgwhen ([llength $out_queue])"
- }
- puts "$orgwhen -> $msg"
- puts $sock $msg
- incr out_creditms -$out_interval
- }
- if {[llength $out_queue]} {
- after $out_interval out_nextmessage
- }
-}
-
-proc out_nextmessage {} {
- out__vars
- set now [clock seconds]
- incr out_creditms $out_interval
- set out_creditat $now
- out_runqueue $now
-}
-
-proc sendout_priority {priority command args} {
- global sock out_queue
- if {[llength $args]} {
- set la [lindex $args end]
- set args [lreplace $args end end]
- foreach i $args {
- if {[regexp {[: ]} $i]} {
- error "bad argument in output $i ($command $args)"
- }
- }
- lappend args :$la
- }
- set args [lreplace $args 0 -1 $command]
- set string [join $args { }]
- set now [clock seconds]
- set newe [list $now $string]
- if {$priority} {
- set out_queue [concat [list $newe] $out_queue]
- } else {
- lappend out_queue $newe
- }
- if {[llength $out_queue] == 1} {
- out_restart
- }
-}
-
-proc sendout {command args} { eval sendout_priority [list 0 $command] $args }
-
-proc log {data} {
- puts $data
-}
-
-proc logerror {data} {
- log $data
-}
-
-proc saveeic {} {
- global saveei saveec errorInfo errorCode
-
- set saveei $errorInfo
- set saveec $errorCode
-
- puts ">$saveec|$saveei<"