func (srv *Srv) flush(req *Req) { conn := req.Conn tag := req.Tc.Oldtag go9p.PackRflush(req.Rc) conn.Lock() r := conn.reqs[tag] if r != nil { req.flushreq = r.flushreq r.flushreq = req } conn.Unlock() if r == nil { // there are no requests with that tag req.Respond() return } r.Lock() status := r.status if (status & (reqWork | reqSaved)) == 0 { /* the request is not worked on yet */ r.status |= reqFlush } r.Unlock() if (status & (reqWork | reqSaved)) == 0 { r.Respond() } else { if op, ok := (srv.ops).(FlushOp); ok { op.Flush(r) } } }
// Respond to the request with Rflush message func (req *Req) RespondRflush() { err := go9p.PackRflush(req.Rc) if err != nil { req.RespondError(err) } else { req.Respond() } }