12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package main
- import (
- "flag"
- "git.swzry.com/zry/zry-go-program-framework/core"
- "git.swzry.com/zry/zry-go-program-framework/easy_toml_config"
- "git.swzry.com/zry/zry-go-program-framework/svcfw"
- "os"
- )
- var ArgsHelp bool
- var ArgsCli bool
- var ArgsCfg string
- var App *svcfw.AppFramework
- var Config ConfigDefClass
- var SubSvcSerial *SerialSubSvc
- var SubSvcServer core.ISubService
- func main() {
- flag.BoolVar(&ArgsHelp, "h", false, "print help")
- flag.BoolVar(&ArgsCli, "cli", false, "specify config by cli args")
- flag.StringVar(&ArgsCfg, "cfg", "config.toml", "specify cfg file, default is 'config.toml'")
- // TODO: Add more args
- flag.Parse()
- if ArgsHelp {
- flag.PrintDefaults()
- return
- }
- App = svcfw.NewAppFramework(true, "main")
- App.InitConsoleLogBackend(os.Stdout, "")
- if ArgsCli {
- App.Panic("load config from cli not supported yet.")
- // TODO: Config from CLI Args
- //App.Info("load config from cli args...")
- } else {
- App.InfoF("load config from '%s'...", ArgsCfg)
- App.MustPrepare("config", func() error {
- return easy_toml_config.LoadConfigFromFile(ArgsCfg, &Config)
- })
- App.MustPrepare("config", ConfigVerifyAndFillDefault)
- }
- switch Config.Server.Mode {
- case "tcp":
- SubSvcServer = NewTCPServerSubSvc()
- break
- case "udp":
- SubSvcServer = NewUDPServerSubSvc()
- break
- case "ws":
- SubSvcServer = NewWSServerSubSvc()
- break
- default:
- App.PanicF("invalid server mode '%s'", Config.Server.Mode)
- return
- }
- SubSvcSerial = NewSerialSubSvc()
- App.AddSubSvc("serial", SubSvcSerial)
- App.AddSubSvc("server", SubSvcServer)
- App.AddSubSvc("sig-quit", svcfw.NewWatchSignalExitSubServiceWithDefault())
- App.Info("preparing sub services...")
- err := App.Prepare()
- if err != nil {
- App.Panic("error in preparing sub services: ", err)
- }
- App.Info("start running sub services...")
- err = App.Run()
- App.Info("all sub services end.")
- if err != nil {
- App.Panic("error in running sub services: ", err)
- }
- }
|