gonews/cmd/gonewsd/main.go

47 lines
960 B
Go
Raw Normal View History

2019-09-02 19:51:38 +05:00
package main
import (
// stdlib
"log"
"os"
"os/signal"
"syscall"
// local
"sources.dev.pztrn.name/gonews/gonews/commands"
"sources.dev.pztrn.name/gonews/gonews/configuration"
"sources.dev.pztrn.name/gonews/gonews/database"
"sources.dev.pztrn.name/gonews/gonews/eventer"
"sources.dev.pztrn.name/gonews/gonews/networker"
2019-09-02 19:51:38 +05:00
)
func main() {
log.Println("Starting gonewsd...")
configuration.Initialize()
2019-09-09 21:52:32 +05:00
database.Initialize()
2019-09-02 19:51:38 +05:00
eventer.Initialize()
commands.Initialize()
2019-09-02 19:51:38 +05:00
networker.Initialize()
eventer.InitializeCompleted()
log.Println("gonewsd is up and ready to serve")
// CTRL+C handler.
signalHandler := make(chan os.Signal, 1)
shutdownDone := make(chan bool, 1)
2019-10-22 04:38:40 +05:00
2019-09-02 19:51:38 +05:00
signal.Notify(signalHandler, os.Interrupt, syscall.SIGTERM)
2019-10-22 04:38:40 +05:00
2019-09-02 19:51:38 +05:00
go func() {
<-signalHandler
log.Println("CTRL+C or SIGTERM received, shutting down gonewsd...")
2019-09-09 21:52:32 +05:00
database.Shutdown()
2019-09-02 19:51:38 +05:00
shutdownDone <- true
}()
<-shutdownDone
log.Println("gonewsd done")
os.Exit(0)
}