URI: 
       tflush.9p - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tflush.9p (2502B)
       ---
            1 .TH FLUSH 9P
            2 .SH NAME
            3 flush \- abort a message
            4 .SH SYNOPSIS
            5 .ta \w'\fLTflush 'u
            6 .IR size [4]
            7 .B Tflush
            8 .IR tag [2]
            9 .IR oldtag [2]
           10 .br
           11 .IR size [4]
           12 .B Rflush
           13 .IR tag [2]
           14 .SH DESCRIPTION
           15 When the response to a request is no longer needed, such as when
           16 a user interrupts a process doing a
           17 .IR read (9p),
           18 a
           19 .B Tflush
           20 request is sent to the server to purge the pending response.
           21 The message being flushed is identified by
           22 .IR oldtag .
           23 The semantics of
           24 .B flush
           25 depends on messages arriving in order.
           26 .PP
           27 The server should answer the
           28 .B flush
           29 message immediately.
           30 If it recognizes
           31 .I oldtag
           32 as the tag of a pending transaction, it should abort any pending response
           33 and discard that tag.
           34 In either case, it should respond with an
           35 .B Rflush
           36 echoing the
           37 .I tag
           38 (not
           39 .IR oldtag )
           40 of the
           41 .B Tflush
           42 message.
           43 A
           44 .B Tflush
           45 can never be responded to by an
           46 .B Rerror
           47 message.
           48 .PP
           49 The server may respond to the pending request before
           50 responding to the
           51 .BR Tflush .
           52 It is possible for a client to send multiple
           53 .B Tflush
           54 messages for a particular pending request.  Each
           55 subsequent
           56 .B Tflush
           57 must contain as
           58 .I oldtag
           59 the tag of the pending request (not a previous
           60 .BR Tflush ).
           61 Should multiple
           62 .BR Tflush es
           63 be received for a pending request, they must be answered in
           64 order.  A
           65 .B Rflush
           66 for any of the multiple
           67 .BR Tflush es
           68 implies an answer for all previous ones.  Therefore, should
           69 a server receive a request and then multiple flushes for that
           70 request, it need respond only to the last flush.
           71 .PP
           72 When the client sends a 
           73 .BR Tflush ,
           74 it must wait to receive the corresponding
           75 .B Rflush
           76 before reusing
           77 .I oldtag
           78 for subsequent messages.
           79 If a response to the flushed request is received before the
           80 .BR Rflush ,
           81 the client must honor the response
           82 as if it had not been flushed,
           83 since the completed request may signify a state change in the server.
           84 For instance,
           85 .B Tcreate
           86 may have created a file and
           87 .B Twalk
           88 may have allocated a fid.
           89 If no response is received before the
           90 .BR Rflush ,
           91 the flushed transaction is considered to have been canceled,
           92 and should be treated as though it had never been sent.
           93 .PP
           94 Several exceptional conditions are handled correctly by the above specification:
           95 sending multiple flushes for a single tag,
           96 flushing after a transaction is completed,
           97 flushing a
           98 .BR Tflush ,
           99 and flushing an invalid tag.
          100 .SH ENTRY POINTS
          101 The
          102 .MR 9pclient (3)
          103 library does not generate
          104 .B flush
          105 transactions..
          106 .MR 9pserve (4)
          107 generates
          108 .B flush
          109 transactions to cancel transactions pending when a client hangs up.