func main()

in main.go [29:86]


func main() {
	flag.Parse()
	flag.Lookup("logtostderr").Value.Set("true")

	if *configPath == "" {
		glog.Fatal("Config file is necessary")
		return
	}

	if *pprofPort != 0 {
		go func() {
			glog.Infof("Started pprof server on port %d", *pprofPort)
			err := http.ListenAndServe(fmt.Sprintf(":%d", *pprofPort), nil)
			if err != nil {
				glog.Fatal("Error starting pprof server: ", err)
			}
		}()
	}

	logger := NewGlogLogger()

	// load initial config
	provider := NewDefaultConfigProvider()
	config, err := dhcplb.LoadConfig(
		*configPath, *overridesPath, *version, provider)
	if err != nil {
		glog.Fatalf("Failed to load config: %s", err)
		return
	}

	// start watching config
	configChan, err := dhcplb.WatchConfig(
		*configPath, *overridesPath, *version, provider)
	if err != nil {
		glog.Fatalf("Failed to watch config: %s", err)
		return
	}

	server, err := dhcplb.NewServer(config, *serverMode, logger)
	if err != nil {
		glog.Fatal(err)
		return
	}

	// update server config whenever file changes
	go func() {
		for {
			select {
			case config := <-configChan:
				glog.Info("Config changed")
				server.SetConfig(config)
			}
		}
	}()

	glog.Infof("Starting dhcplb in v%d mode", *version)
	glog.Fatal(server.ListenAndServe())
}