From f95a11e27f8465435dd8a69ca6da67bbc6957270 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Thu, 5 Feb 2009 15:56:31 -0800 Subject: [PATCH] further pedagogy: a channel that satisfies the HTTP server interface R=rsc DELTA=18 (18 added, 0 deleted, 0 changed) OCL=24482 CL=24484 --- src/lib/http/triv.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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()) -- 2.48.1