burlesque/main.go

47 lines
707 B
Go
Raw Normal View History

2014-07-08 17:59:16 +07:00
package main
import (
2014-07-16 02:46:22 +07:00
"fmt"
2014-07-08 17:59:16 +07:00
"github.com/stvp/rollbar"
"net/http"
"os"
"os/signal"
"syscall"
)
2014-07-10 19:19:39 +07:00
func HandleShutdown() {
ch := make(chan os.Signal)
signal.Notify(ch, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT)
2014-07-08 17:59:16 +07:00
go func() {
2014-07-10 19:19:39 +07:00
<-ch
2014-07-12 17:58:56 +07:00
2014-07-08 17:59:16 +07:00
SaveState()
2014-07-12 17:42:26 +07:00
Log("State successfully persisted")
2014-07-12 17:58:56 +07:00
2014-07-17 00:50:05 +07:00
CloseStorage()
2014-07-12 17:58:56 +07:00
Log("Waiting for rollbar...")
rollbar.Wait()
Log("Stopped")
os.Exit(0)
2014-07-08 17:59:16 +07:00
}()
2014-07-10 19:19:39 +07:00
}
2014-07-08 17:59:16 +07:00
2014-07-10 19:19:39 +07:00
func main() {
SetupConfig()
2014-07-12 17:58:56 +07:00
SetupLogging()
2014-07-10 19:19:39 +07:00
SetupStorage()
SetupServer()
HandleShutdown()
LoadState()
2014-07-08 17:59:16 +07:00
go KeepStatePersisted()
2014-07-16 02:46:22 +07:00
port := fmt.Sprintf(":%d", Config.Port)
2014-07-17 00:50:05 +07:00
err := http.ListenAndServe(port, nil)
if err != nil {
Error(err, "Error starting server on port %d", Config.Port)
}
2014-07-08 17:59:16 +07:00
}