func (log *Logger) Log9p(f *g9p.Fcall) { if f == nil { http.Handle(log.path, nil) stats.mu.Lock() for e := stats.conns.Front(); e != nil; e = e.Next() { if e.Value == log { stats.conns.Remove(e) break } } stats.mu.Unlock() return } log.mu.Lock() if f.IsTmsg() { log.npend++ log.nreqs++ if log.npend > log.maxpend { log.maxpend = log.npend } log.tmsgsize += int64(f.Size) } else { log.rmsgsize += int64(f.Size) // TODO: cater for flushes log.npend-- } if log.maxHist != 0 && f.Type != 0 { nf := new(g9p.Fcall) *nf = *f if log.flags&Packets != 0 { nf.Pkt = make([]byte, len(f.Pkt)) copy(nf.Pkt, f.Pkt) } else { nf.Pkt = nil } log.history.PushFront(nf) if log.history.Len() > log.maxHist && log.maxHist != -1 { log.history.Remove(log.history.Back()) } } log.mu.Unlock() }