Przeglądaj źródła

support setting cache size and port via cmdline flags

Lucas Stadler 11 lat temu
rodzic
commit
842cb298ba
1 zmienionych plików z 11 dodań i 5 usunięć
  1. 11 5
      go/favicon.go

+ 11 - 5
go/favicon.go

@ -2,6 +2,7 @@ package main
2 2
3 3
import (
4 4
	"errors"
5
	"flag"
5 6
	"fmt"
6 7
	"net/http"
7 8
	"net/url"
@ -13,19 +14,24 @@ import (
13 14
	"github.com/golang/groupcache/lru"
14 15
)
15 16
16
var port = "8080"
17
var port = flag.Int("p", 8080, "port [8080]")
18
var cacheSize = flag.Int("s", 10000, "cache size [10000]")
17 19
18
var faviconCache = lru.New(10000)
20
var faviconCache *lru.Cache
19 21
var lock sync.RWMutex
20 22
21 23
func main() {
24
	flag.Parse()
25
26
	faviconCache = lru.New(*cacheSize)
27
22 28
	http.HandleFunc("/favicon", HandleGetFavicon)
23 29
	if p := os.Getenv("PORT"); p != "" {
24
		port = p
30
		flag.Set("p", p)
25 31
	}
26
	fmt.Printf("listening on :%s\n", port)
27
	err := http.ListenAndServe(fmt.Sprintf(":%s", port), nil)
28 32
33
	fmt.Printf("listening on :%d\n", *port)
34
	err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)
29 35
	if err != nil {
30 36
		fmt.Println("error: ", err)
31 37
		os.Exit(1)