diff --git a/ch1/server2.go b/ch1/server2.go new file mode 100644 index 0000000..49b69a1 --- /dev/null +++ b/ch1/server2.go @@ -0,0 +1,33 @@ +// Server2 - минимальный "echo"-сервер со счетчиком запросов. +package main + +import ( + "fmt" + "log" + "net/http" + "sync" +) + +var mu sync.Mutex +var count int + +func main() { + http.HandleFunc("/", handler) + http.HandleFunc("/count", counter) + log.Fatal(http.ListenAndServe("localhost:8888", nil)) +} + +// Обрабочик, возвращающий количество сделанных запросов. +func handler(w http.ResponseWriter, r *http.Request) { + mu.Lock() + count++ + mu.Unlock() + fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path) +} + +// Счетчик, возвращающий количество сделанных запросов. +func counter(w http.ResponseWriter, r *http.Request) { + mu.Lock() + fmt.Fprintf(w, "Count %d\n", count) + mu.Unlock() +} \ No newline at end of file