28 lines
961 B
Tcl
28 lines
961 B
Tcl
proc gtkwave_getdata {sock} {
|
|
global gtkwave_server_getdata
|
|
if {[eof $sock] || [catch {gets $sock gtkwave_server_getdata(line,$sock)}]} {
|
|
close $sock
|
|
puts "Close $gtkwave_server_getdata(addr,$sock)"
|
|
unset gtkwave_server_getdata(addr,$sock)
|
|
unset gtkwave_server_getdata(line,$sock)
|
|
unset gtkwave_server_getdata(res,$sock)
|
|
} else {
|
|
puts "tcp--> $gtkwave_server_getdata(line,$sock)"
|
|
# gtkwave command must be executed at global scope...
|
|
uplevel #0 [list catch $gtkwave_server_getdata(line,$sock) gtkwave_server_getdata(res,$sock)]
|
|
puts $sock "$gtkwave_server_getdata(res,$sock)"
|
|
}
|
|
}
|
|
|
|
proc gtkwave_server {sock addr port} {
|
|
global gtkwave_server_getdata
|
|
puts "Accept $sock from $addr port $port"
|
|
fconfigure $sock -buffering line
|
|
set gtkwave_server_getdata(addr,$sock) [list $addr $port]
|
|
fileevent $sock readable [list gtkwave_getdata $sock]
|
|
}
|
|
|
|
set gtkwave_port 2022
|
|
socket -server gtkwave_server $gtkwave_port
|
|
|