Break Service interface into smaller chunks. Add Start and Stop methods.
This commit is contained in:
+28
-9
@@ -6,11 +6,15 @@ import (
|
||||
"os"
|
||||
)
|
||||
|
||||
var localLog service.Logger
|
||||
|
||||
func main() {
|
||||
var name = "GoServiceTest"
|
||||
var displayName = "Go Service Test"
|
||||
var desc = "This is a test Go service. It is designed to run well."
|
||||
var ws, err = service.NewService(name, displayName, desc)
|
||||
|
||||
var s, err = service.NewService(name, displayName, desc)
|
||||
localLog = s
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("%s unable to start: %s", displayName, err)
|
||||
@@ -22,41 +26,56 @@ func main() {
|
||||
verb := os.Args[1]
|
||||
switch verb {
|
||||
case "install":
|
||||
err = ws.Install()
|
||||
err = s.Install()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to install: %s\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Service \"%s\" installed.\n", displayName)
|
||||
case "remove":
|
||||
err = ws.Remove()
|
||||
err = s.Remove()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to remove: %s\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Service \"%s\" removed.\n", displayName)
|
||||
case "run":
|
||||
doWork()
|
||||
case "start":
|
||||
err = s.Start()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to start: %s\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Service \"%s\" started.\n", displayName)
|
||||
case "stop":
|
||||
err = s.Stop()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to stop: %s\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Service \"%s\" stopped.\n", displayName)
|
||||
}
|
||||
return
|
||||
}
|
||||
err = ws.Run(func() error {
|
||||
err = s.Run(func() error {
|
||||
// start
|
||||
go doWork()
|
||||
ws.LogInfo("I'm Running!")
|
||||
return nil
|
||||
}, func() error {
|
||||
// stop
|
||||
stopWork()
|
||||
ws.LogInfo("I'm Stopping!")
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
ws.LogError(err.Error())
|
||||
s.LogError(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func doWork() {
|
||||
|
||||
localLog.LogInfo("I'm Running!")
|
||||
select {}
|
||||
}
|
||||
func stopWork() {
|
||||
|
||||
localLog.LogInfo("I'm Stopping!")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user