cosmium/cmd/server/server.go

41 lines
939 B
Go
Raw Normal View History

2024-02-10 17:17:34 +02:00
package main
import (
"os"
"os/signal"
"syscall"
2024-02-10 17:17:34 +02:00
"github.com/pikami/cosmium/api"
"github.com/pikami/cosmium/api/config"
"github.com/pikami/cosmium/internal/repositories"
2024-02-10 17:17:34 +02:00
)
func main() {
configuration := config.ParseFlags()
2024-02-10 17:17:34 +02:00
repository := repositories.NewDataRepository(repositories.RepositoryOptions{
InitialDataFilePath: configuration.InitialDataFilePath,
PersistDataFilePath: configuration.PersistDataFilePath,
})
server := api.NewApiServer(repository, configuration)
server.Start()
waitForExit(server, repository, configuration)
}
func waitForExit(server *api.ApiServer, repository *repositories.DataRepository, config config.ServerConfig) {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
// Block until a exit signal is received
<-sigs
2024-12-18 00:28:59 +02:00
// Stop the server
server.Stop()
2024-12-18 00:28:59 +02:00
if config.PersistDataFilePath != "" {
repository.SaveStateFS(config.PersistDataFilePath)
}
2024-02-10 17:17:34 +02:00
}