Break Service interface into smaller chunks. Add Start and Stop methods.

This commit is contained in:
Daniel Theophanes
2012-10-22 23:44:42 -07:00
parent e339dcfdd0
commit 132c4b486b
5 changed files with 128 additions and 43 deletions
+28 -9
View File
@@ -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!")
}