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)
 | 
						|
}
 |