package krpc import ( "fmt" "net/http" "text/template" ) const debugText = ` kRPC Services {{range .}}
Service {{.Name}}
{{range $name, $mtype := .Method}} {{end}}
MethodCalls
{{$name}}({{$mtype.ArgType}}, {{$mtype.ReplyType}}) error {{$mtype.NumCalls}}
{{end}} ` var debug = template.Must(template.New("RPC debug").Parse(debugText)) type debugHTTP struct { *Server } type debugService struct { Name string Method map[string]*methodType } func (s debugHTTP) ServeHTTP(w http.ResponseWriter, r *http.Request) { var services []debugService s.serviceMap.Range(func(namei, svci interface{}) bool { svc := svci.(*service) services = append(services, debugService{Name: namei.(string), Method: svc.method,}) return true }) err := debug.Execute(w, services) if err != nil { _, _ = fmt.Fprintln(w, "rpc: error executing template:", err.Error()) } }