diff options
| author | Rob Pike <r@golang.org> | 2009-02-05 15:56:31 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2009-02-05 15:56:31 -0800 |
| commit | f95a11e27f8465435dd8a69ca6da67bbc6957270 (patch) | |
| tree | 1ebdaf600b859686c1a673d33f327c6eb210bdf1 /src/lib/http | |
| parent | b0009bef20badeb3716ed94c8291accc75cf769e (diff) | |
| download | go-f95a11e27f8465435dd8a69ca6da67bbc6957270.tar.xz | |
further pedagogy: a channel that satisfies the HTTP server interface
R=rsc
DELTA=18 (18 added, 0 deleted, 0 changed)
OCL=24482
CL=24484
Diffstat (limited to 'src/lib/http')
| -rw-r--r-- | src/lib/http/triv.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/http/triv.go b/src/lib/http/triv.go index 136100135a..3c527310ed 100644 --- a/src/lib/http/triv.go +++ b/src/lib/http/triv.go @@ -45,11 +45,29 @@ func FileServer(c *http.Conn, req *http.Request) { fmt.Fprintf(c, "[%d bytes]\n", n); } +// a channel (just for the fun of it) +type Chan chan int + +func ChanCreate() Chan { + c := make(Chan); + go func(c Chan) { + for x := 0;; x++ { + c <- x + } + }(c); + return c; +} + +func (ch Chan) ServeHTTP(c *http.Conn, req *http.Request) { + io.WriteString(c, fmt.Sprintf("channel send #%d\n", <-ch)); +} + func main() { flag.Parse(); http.Handle("/counter", new(Counter)); http.Handle("/go/", http.HandlerFunc(FileServer)); http.Handle("/go/hello", http.HandlerFunc(HelloServer)); + http.Handle("/chan", ChanCreate()); err := http.ListenAndServe(":12345", nil); if err != nil { panic("ListenAndServe: ", err.String()) |
