main.go 851 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // API doc: https://wiki.summercamp.local/display/PIN/Pinguin+server+API
  2. package main
  3. import (
  4. "log"
  5. "net/http"
  6. "os"
  7. "runtime/pprof"
  8. "strconv"
  9. "battlecamp-go-server/flag"
  10. "battlecamp-go-server/games"
  11. )
  12. var currentGames games.GameServer = games.New()
  13. func main() {
  14. initLogging()
  15. log.Println("Game server version 0.1")
  16. initCliFlags()
  17. log.Fatal(http.ListenAndServe(":"+strconv.Itoa(*flag.Port), newUrlRouter()))
  18. }
  19. func initLogging() {
  20. logFile, err := os.Create("server.log")
  21. if err == nil {
  22. log.SetOutput(logFile)
  23. } else {
  24. log.Println("ERROR: Cannot open log file, using console.")
  25. log.Printf("%v=n", err)
  26. }
  27. }
  28. func initCliFlags() {
  29. flag.ParseFlags()
  30. if *flag.CpuProfile != "" {
  31. f, err := os.Create(*flag.CpuProfile)
  32. if err != nil {
  33. log.Fatal(err)
  34. }
  35. pprof.StartCPUProfile(f)
  36. defer pprof.StopCPUProfile()
  37. }
  38. }