rssmon3/main.go

53 lines
844 B
Go

package main
import (
"local/rssmon2/monitor"
"local/rssmon3/config"
"local/rssmon3/server"
"log"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
log.SetPrefix("..")
time.Local = time.FixedZone("UTC-6", (-6*int(time.Hour))/int(time.Second))
sigc := make(chan os.Signal)
if err := config.New(); err != nil {
panic(err)
}
log.Println(config.Values())
s := server.New()
if err := s.Routes(); err != nil {
panic(err)
}
go InterruptAfter(s.Run, sigc)
m, err := monitor.New()
if err != nil {
panic(err)
}
go InterruptAfter(m.Run, sigc)
signal.Notify(sigc,
syscall.SIGHUP,
syscall.SIGINT,
syscall.SIGTERM,
syscall.SIGQUIT,
)
<-sigc
can()
config.Values().DB.Close()
}
func InterruptAfter(foo func() error, c chan os.Signal) {
if err := foo(); err != nil {
log.Println(err)
}
c <- syscall.SIGINT
}