Tcl Source Code

Artifact [96e625123f]
Login

Artifact 96e625123f7baad58707457b7d0b1bbf99aae3bd:

Attachment "save.anno" to ticket [2827000fff] added by coldstore 2009-07-25 20:19:53.
The refchan is rc18, the underlying socket is sock15.

* The rc18 initialize is called:
  chan @@{rc18 initialize sock15 read write (-blocking 1 -buffering full -buffersize 4096 -encoding iso8859-1 -eofchar {{} {}} -translation {auto crlf} -peername {60.241.67.53 60-241-67-53.static.tpgi.com.au 61483} -sockname {70.85.16.128 li10-128.members.linode.com 8080})}

* the app turns blocking off:
  chan @@{rc18 blocking sock15 0 -> }

(app creates its reader) Httpd @@{create reader ::Httpd::rc18_1504 - socket rc18 prototype {-host wiki.tcl.tk -port 80 -httpd Httpd -id 1 -cid 19 -sock rc18 -ipaddr 60.241.67.53 -rport 61483 -received_seconds 1248499688 -server_id {Wub 4.0} -version 1.1 -generation 19} generation 19 cid 19 log file6}

* as a result of an app [gets], tcl watches reads on the rc:
  chan @@{rc18 watch sock15 read}

* Chan reports rc18 is readable, as sock15 is:
  chan @@{rc18 readable sock15}

* rc18 read is called.  4096 bytes are requested, 1440 bytes are delivered:
  chan @@{rc18 read sock15 4096 -> 1440 bytes 'POST /_/edit/save HTT...tion+with+concommitta'}

* tcl is no longer watching readable:
  chan @@{rc18 watch sock15 }

(App parses the header from some of the received bytes: Httpd @@{::Httpd::rc18_1504 reader got request: (...)})

* tcl reads a buffer's worth of bytes from rc18, but there are no bytes buffered in sock15, so an empty string is returned:
  chan @@{rc18 read sock15 4096 -> 0 bytes '...'}

* tcl watches read (presumably because the app has a fileevent readable):
chan @@{rc18 watch sock15 read}

* application calles [eof rc18] which returns true, and terminates its reader:
  Httpd @@{::Httpd::rc18_1504 terminate: (entity)}

* tcl stops watching:
  chan @@{rc18 watch sock15 }

* app closes rc18, chan is finalized and Char instance destroyed:
  chan @@{rc18 finalize sock15}
  chan @@{::oo::Obj44 destroyed}