1
0
Fork 0
forward/main.go

67 lines
903 B
Go

package main
import (
"log"
"os"
"path/filepath"
"sync"
"github.com/judwhite/go-svc/svc"
)
type program struct {
logFile *os.File
wg sync.WaitGroup
}
func main() {
prg := &program{}
if err := svc.Run(prg); err != nil {
log.Fatal(err)
}
}
func (p *program) Init(env svc.Environment) error {
if env.IsWindowsService() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
return err
}
logPath := filepath.Join(dir, "forward.log")
f, err := os.OpenFile(logPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
return err
}
p.logFile = f
log.SetOutput(f)
}
setup()
return nil
}
func (p *program) Start() error {
p.wg.Add(1)
go func() {
serve()
p.wg.Done()
}()
log.Print("started")
return nil
}
func (p *program) Stop() error {
log.Print("stopping...")
ln.Close()
p.wg.Wait()
log.Print("stopped")
return nil
}