58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
// +build httpstats
|
|
|
|
package go9p
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
)
|
|
|
|
func (clnt *Clnt) ServeHTTP(c http.ResponseWriter, r *http.Request) {
|
|
io.WriteString(c, fmt.Sprintf("<html><body><h1>Client %s</h1>", clnt.Id))
|
|
defer io.WriteString(c, "</body></html>")
|
|
|
|
// fcalls
|
|
if clnt.Debuglevel&DbgLogFcalls != 0 {
|
|
fs := clnt.Log.Filter(clnt, DbgLogFcalls)
|
|
io.WriteString(c, fmt.Sprintf("<h2>Last %d 9P messages</h2>", len(fs)))
|
|
for _, l := range fs {
|
|
fc := l.Data.(*Fcall)
|
|
if fc.Type != 0 {
|
|
io.WriteString(c, fmt.Sprintf("<br>%s", fc))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func clntServeHTTP(c http.ResponseWriter, r *http.Request) {
|
|
io.WriteString(c, fmt.Sprintf("<html><body>"))
|
|
defer io.WriteString(c, "</body></html>")
|
|
|
|
clnts.Lock()
|
|
if clnts.clntList == nil {
|
|
io.WriteString(c, "no clients")
|
|
}
|
|
|
|
for clnt := clnts.clntList; clnt != nil; clnt = clnt.next {
|
|
io.WriteString(c, fmt.Sprintf("<a href='/go9p/clnt/%s'>%s</a><br>", clnt.Id, clnt.Id))
|
|
}
|
|
clnts.Unlock()
|
|
}
|
|
|
|
func (clnt *Clnt) statsRegister() {
|
|
http.Handle("/go9p/clnt/"+clnt.Id, clnt)
|
|
}
|
|
|
|
func (clnt *Clnt) statsUnregister() {
|
|
http.Handle("/go9p/clnt/"+clnt.Id, nil)
|
|
}
|
|
|
|
func (c *ClntList) statsRegister() {
|
|
http.HandleFunc("/go9p/clnt", clntServeHTTP)
|
|
}
|
|
|
|
func (c *ClntList) statsUnregister() {
|
|
http.HandleFunc("/go9p/clnt", nil)
|
|
}
|