package main import ( "fmt" "log" "os" "daydev.org/shipsgs/internal/config" "daydev.org/shipsgs/internal/gameServer" "daydev.org/shipsgs/internal/server" "daydev.org/shipsgs/internal/utils" "github.com/xlab/closer" ) var Logger *utils.Logger var ch_sighup *chan bool //GameServer Public Global Instance var GS *gameServer.GameServer func main() { logFile, err := os.OpenFile("runlog.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { fmt.Println(err) } else { log.SetOutput(logFile) } defer logFile.Close() closer.Bind(cleanup) //Can be optimised to NEW instead of MAKE sighup := make(chan bool) ch_sighup = &sighup //If debug - fill Stdout too - LOG to use? //Logger = utils.New(os.Stdout, utils.LevelInfo) config.ReadConfig() GS = new(gameServer.GameServer) GS.Init(Logger, &config.Config) go GS.Update() log.Println("Starting Healthy") //closer.Hold() server.SetupAndRun(":8080", ch_sighup) GS.WG.Wait() } func cleanup() { fmt.Println("Shutting down ") //Investigate why no messages on correct closing GS.Shutdown <- true // Main function has to be closed the last *ch_sighup <- true Logger.PrintInfo("main", map[string]string{ "Info": "Closing Application Normally", }) }