glenda.party
term% ls -F
term% pwd
$home/manuals/9front/5/flush
term% cat index.txt
FLUSH(5)                      File Formats Manual                     FLUSH(5)

NAME
       flush - abort a message

SYNOPSIS
       size[4] Tflush tag[2] oldtag[2]
       size[4] Rflush tag[2]

DESCRIPTION
       When the response to a request is no longer needed, such as when a user
       interrupts  a  process doing a read(2), a Tflush request is sent to the
       server to purge the pending response.  The  message  being  flushed  is
       identified  by  oldtag.  The semantics of flush depends on messages ar‐
       riving in order.

       The server should answer the flush message immediately.  If  it  recog‐
       nizes  oldtag  as the tag of a pending transaction, it should abort any
       pending response and discard that tag.  In either case, it  should  re‐
       spond  with  an  Rflush echoing the tag (not oldtag) of the Tflush mes‐
       sage.  A Tflush can never be responded to by an Rerror message.

       The server may respond to the pending request before responding to  the
       Tflush.   It  is possible for a client to send multiple Tflush messages
       for a particular pending request.  Each subsequent Tflush must  contain
       as  oldtag  the  tag  of  the  pending request (not a previous Tflush).
       Should multiple Tflushes be received for a pending request,  they  must
       be  answered  in  order.  A Rflush for any of the multiple Tflushes im‐
       plies an answer for all previous ones.  Therefore, should a server  re‐
       ceive a request and then multiple flushes for that request, it need re‐
       spond only to the last flush.

       When the client sends a Tflush, it must wait to receive the correspond‐
       ing  Rflush  before  reusing  oldtag for subsequent messages.  If a re‐
       sponse to the flushed request is received before the Rflush, the client
       must honor the response as if it had not been flushed, since  the  com‐
       pleted request may signify a state change in the server.  For instance,
       Tcreate may have created a file and Twalk may have allocated a fid.  If
       no  response  is received before the Rflush, the flushed transaction is
       considered to have been canceled, and should be treated  as  though  it
       had never been sent.

       Several exceptional conditions are handled correctly by the above spec‐
       ification:  sending multiple flushes for a single tag, flushing after a
       transaction is completed, flushing a Tflush, and  flushing  an  invalid
       tag.

                                                                      FLUSH(5)