Commit a08fb0ff authored by David Symonds's avatar David Symonds

Add a HTTP handler to the exvar package.

R=r
APPROVED=r
DELTA=20  (11 added, 6 deleted, 3 changed)
OCL=27782
CL=27950
parent 1304183e
...@@ -8,6 +8,8 @@ package exvar ...@@ -8,6 +8,8 @@ package exvar
import ( import (
"fmt"; "fmt";
"http";
"io";
) )
// If mismatched names are used (e.g. calling IncrementInt on a mapVar), the // If mismatched names are used (e.g. calling IncrementInt on a mapVar), the
...@@ -220,3 +222,12 @@ func String() string { ...@@ -220,3 +222,12 @@ func String() string {
}); });
return s return s
} }
// ExvarHandler is a HTTP handler that displays exported variables.
// Use it like this:
// http.Handle("/exvar", http.HandlerFunc(exvar.ExvarHandler));
func ExvarHandler(c *http.Conn, req *http.Request) {
// TODO(dsymonds): Support different output= args.
c.SetHeader("content-type", "text/plain; charset=utf-8");
io.WriteString(c, String());
}
...@@ -18,23 +18,17 @@ import ( ...@@ -18,23 +18,17 @@ import (
// hello world, the web server // hello world, the web server
func HelloServer(c *http.Conn, req *http.Request) { func HelloServer(c *http.Conn, req *http.Request) {
exvar.Increment("hello-requests", 1); exvar.IncrementInt("hello-requests", 1);
io.WriteString(c, "hello, world!\n"); io.WriteString(c, "hello, world!\n");
} }
// Handler for /exvar requests.
func ExvarServer(c *http.Conn, req *http.Request) {
c.SetHeader("content-type", "text/plain; charset=utf-8");
io.WriteString(c, exvar.String());
}
// simple counter server // simple counter server
type Counter struct { type Counter struct {
n int; n int;
} }
func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) { func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
exvar.Increment("counter-requests", 1); exvar.IncrementInt("counter-requests", 1);
fmt.Fprintf(c, "counter = %d\n", ctr.n); fmt.Fprintf(c, "counter = %d\n", ctr.n);
ctr.n++; ctr.n++;
} }
...@@ -101,7 +95,7 @@ func main() { ...@@ -101,7 +95,7 @@ func main() {
http.Handle("/args", http.HandlerFunc(ArgServer)); http.Handle("/args", http.HandlerFunc(ArgServer));
http.Handle("/go/hello", http.HandlerFunc(HelloServer)); http.Handle("/go/hello", http.HandlerFunc(HelloServer));
http.Handle("/chan", ChanCreate()); http.Handle("/chan", ChanCreate());
http.Handle("/exvar", http.HandlerFunc(ExvarServer)); http.Handle("/exvar", http.HandlerFunc(exvar.ExvarHandler));
err := http.ListenAndServe(":12345", nil); err := http.ListenAndServe(":12345", nil);
if err != nil { if err != nil {
panic("ListenAndServe: ", err.String()) panic("ListenAndServe: ", err.String())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment