gonews/cmd/gonewsd/main.go

47 lines
960 B
Go

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"
)
func main() {
log.Println("Starting gonewsd...")
configuration.Initialize()
database.Initialize()
eventer.Initialize()
commands.Initialize()
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)
signal.Notify(signalHandler, os.Interrupt, syscall.SIGTERM)
go func() {
<-signalHandler
log.Println("CTRL+C or SIGTERM received, shutting down gonewsd...")
database.Shutdown()
shutdownDone <- true
}()
<-shutdownDone
log.Println("gonewsd done")
os.Exit(0)
}