dwww Home | Manual pages | Find package

fblocked(3tcl)               Tcl Built-In Commands              fblocked(3tcl)

NAME
       fblocked  -  Test whether the last input operation exhausted all avail-
       able input

SYNOPSIS
       fblocked channelId

DESCRIPTION
       The fblocked command returns 1 if the most recent  input  operation  on
       channelId  returned  less information than requested because all avail-
       able input was exhausted.  For example, if gets is invoked  when  there
       are  only  three  characters available for input and no end-of-line se-
       quence, 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 stan-
       dard channel (stdin, stdout, or stderr), the return value from an invo-
       cation  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 a line-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 con-
       nect {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
           } }

       # Create the server socket and enter the event-loop to wait #  for  in-
       coming connections...  socket -server connect 12345 vwait forever

SEE ALSO
       gets(3tcl),  open(3tcl),  read(3tcl),  socket(3tcl),  Tcl_StandardChan-
       nels(3tcl)

KEYWORDS
       blocking, nonblocking

Tcl                                   7.5                       fblocked(3tcl)

Generated by dwww version 1.14 on Wed Jan 22 23:57:54 CET 2025.