Posted to tcl by pooryorick at Fri Dec 14 18:09:22 GMT 2012view raw
- #! /bin/env tclsh
- proc morecowgets {count url} {
- variable wgets
- while {[incr count -1] > -1} {
- set chan [open "|wget $url"]
- chan configure $chan -blocking false
- chan event $chan readable [list reading $chan]
- dict set wgets $chan alive
- }
- }
- proc reading {chan} {
- variable wgets
- if {[eof $chan]} {
- close $chan
- puts "unsetting $chan"
- dict unset wgets $chan
- } else {
- read $chan
- }
- }
- proc wgets args {
- puts "howdy"
- variable total
- variable wgets
- set count 20
- if {![dict size $wgets]} {
- puts "new batch!"
- if {[incr total $count] > 100} {
- variable end true
- }
- morecowgets $count http://www.google.com
- }
- }
- variable total 0
- trace add variable [namespace current]::wgets write wgets
- #this triggers the trace
- variable wgets [dict create]
- vwait [namespace current]::end