Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/gin-gonic/gin"
- "github.com/takama/daemon"
- "net/http"
- "os"
- "os/signal"
- "syscall"
- "time"
- )
- type Service struct {
- daemon.Daemon
- }
- func (service* Service) Manage() (string, error){
- if len(os.Args) > 1 {
- command := os.Args[1]
- switch command {
- case "install":
- return service.Install()
- case "remove":
- return service.Remove()
- case "start":
- return service.Start()
- case "stop":
- return service.Stop()
- case "status":
- return service.Status()
- default:
- return "Usage: install | remove | start | stop | status", nil
- }
- }
- r := gin.Default()
- r.GET("/", func(g *gin.Context) {
- g.JSON(http.StatusOK, gin.H{
- "message": "Server running successfully",
- })
- })
- go r.Run(":8080")
- sig := make(chan os.Signal, 1)
- signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
- sis := <- sig
- fmt.Println("signal received: ", sis.String())
- time.Sleep(2*time.Second)
- return "Closed", nil
- }
- func main() {
- srv, err := daemon.New("my-gin-app", "my gin app", daemon.SystemDaemon)
- if err !=nil{
- panic(err)
- }
- service := &Service{srv}
- status, err := service.Manage()
- if err != nil{
- panic(err)
- }
- fmt.Println(status)
- }
Add Comment
Please, Sign In to add comment