main.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2015 Daniel Theophanes.
  2. // Use of this source code is governed by a zlib-style
  3. // license that can be found in the LICENSE file.
  4. // simple does nothing except block while running the service.
  5. package main
  6. import (
  7. "log"
  8. "os"
  9. "time"
  10. "github.com/kardianos/service"
  11. )
  12. var logger service.Logger
  13. type program struct{}
  14. func (p *program) Start(s service.Service) error {
  15. // Start should not block. Do the actual work async.
  16. go p.run()
  17. return nil
  18. }
  19. func (p *program) run() {
  20. // Do work here
  21. }
  22. func (p *program) Stop(s service.Service) error {
  23. // Stop should not block. Return with a few seconds.
  24. <-time.After(time.Second * 13)
  25. return nil
  26. }
  27. func main() {
  28. svcConfig := &service.Config{
  29. Name: "GoServiceExampleStopPause",
  30. DisplayName: "Go Service Example: Stop Pause",
  31. Description: "This is an example Go service that pauses on stop.",
  32. }
  33. prg := &program{}
  34. s, err := service.New(prg, svcConfig)
  35. if err != nil {
  36. log.Fatal(err)
  37. }
  38. if len(os.Args) > 1 {
  39. err = service.Control(s, os.Args[1])
  40. if err != nil {
  41. log.Fatal(err)
  42. }
  43. return
  44. }
  45. logger, err = s.Logger(nil)
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. err = s.Run()
  50. if err != nil {
  51. logger.Error(err)
  52. }
  53. }