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)