Skip to content

Instantly share code, notes, and snippets.

@Farzy
Created February 25, 2017 10:26
Show Gist options
  • Save Farzy/26b963d20f0e5336d1676af111733e82 to your computer and use it in GitHub Desktop.
Save Farzy/26b963d20f0e5336d1676af111733e82 to your computer and use it in GitHub Desktop.
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
// See page 20.
//!+
// Server2 is a minimal "echo" and counter server.
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:8000", nil))
}
// handler echoes the Path component of the requested URL.
func handler(w http.ResponseWriter, r *http.Request) {
mu.Lock()
count++
mu.Unlock()
fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
}
// counter echoes the number of calls so far.
func counter(w http.ResponseWriter, r *http.Request) {
mu.Lock()
fmt.Fprintf(w, "Count %d\n", count)
mu.Unlock()
}
//!-
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment