bisakh

os-service

Apr 10th, 2021 (edited)
570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.25 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "github.com/gin-gonic/gin"
  6.     "github.com/takama/daemon"
  7.     "net/http"
  8.     "os"
  9.     "os/signal"
  10.     "syscall"
  11.     "time"
  12. )
  13.  
  14. type Service struct {
  15.     daemon.Daemon
  16. }
  17.  
  18. func (service* Service) Manage() (string, error){
  19.     if len(os.Args) > 1 {
  20.         command := os.Args[1]
  21.         switch command {
  22.         case "install":
  23.             return service.Install()
  24.         case "remove":
  25.             return service.Remove()
  26.         case "start":
  27.             return service.Start()
  28.         case "stop":
  29.             return service.Stop()
  30.         case "status":
  31.             return service.Status()
  32.         default:
  33.             return "Usage: install | remove | start | stop | status", nil
  34.         }
  35.     }
  36.  
  37.     r := gin.Default()
  38.  
  39.     r.GET("/", func(g *gin.Context) {
  40.         g.JSON(http.StatusOK, gin.H{
  41.             "message": "Server running successfully",
  42.         })
  43.     })
  44.  
  45.  
  46.     go r.Run(":8080")
  47.  
  48.     sig := make(chan os.Signal, 1)
  49.  
  50.     signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL)
  51.  
  52.     sis := <- sig
  53.  
  54.     fmt.Println("signal received: ", sis.String())
  55.     time.Sleep(2*time.Second)
  56.     return "Closed", nil
  57. }
  58. func main() {
  59.     srv, err := daemon.New("my-gin-app", "my gin app", daemon.SystemDaemon)
  60.  
  61.     if err !=nil{
  62.         panic(err)
  63.     }
  64.     service := &Service{srv}
  65.     status, err := service.Manage()
  66.     if err != nil{
  67.         panic(err)
  68.     }
  69.     fmt.Println(status)
  70. }
Add Comment
Please, Sign In to add comment