Tcl Built-In Commands fblocked(1T)
_________________________________________________________________
NAME
fblocked - Test whether the last input operation exhausted
all available inputSYNOPSIS
fblocked channelId
_________________________________________________________________
DESCRIPTION
The fblocked command returns 1 if the most recent input
operation on channelId returned less information than requested because all available input was exhausted. Forexample, if gets is invoked when there are only three char-
acters available for input and no end-of-line sequence, gets
returns an empty string and a subsequent call to fblocked
will return 1. ChannelId must be an identifier for an open channel such as | a Tcl standard channel (stdin, stdout, or stderr), the | return value from an invocation of open or socket, or the | result of a channel creation command provided by a Tcl | extension.EXAMPLE
The fblocked command is particularly useful when writing
network servers, as it allows you to write your code in aline-by-line style without preventing the servicing of other
connections. This can be seen in this simple echo-service:
# This is called whenever a new client connects to the server
proc connect {chan host port} {set clientName [format <%s:%d> $host $port]
puts "connection from $clientName"
fconfigure $chan -blocking 0 -buffering line
fileevent $chan readable [list echoLine $chan $clientName]
}# This is called whenever either at least one byte of input
# data is available, or the channel was closed by the client.
proc echoLine {chan clientName} {gets $chan line
if {[eof $chan]} {
puts "finishing connection from $clientName"
close $chan
} elseif {![fblocked $chan]} {
# Didn't block waiting for end-of-line
puts "$clientName - $line"
puts $chan $line
} Tcl Last change: 7.5 1Tcl Built-In Commands fblocked(1T)
}# Create the server socket and enter the event-loop to wait
# for incoming connections...
socket -server connect 12345
vwait foreverSEE ALSO
gets(1T), open(1T), read(1T), socket(1T),Tcl_StandardChannels(3TCL)
KEYWORDS blocking, nonblockingATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:_______________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE|
|____________________|__________________|_
| Availability | runtime/tcl-8 |
|____________________|__________________|_
| Interface Stability| Uncommitted ||____________________|_________________|
NOTES Source for Tcl is available on http://opensolaris.org. Tcl Last change: 7.5 2