| | |
| | | package main |
| | | |
| | | import ( |
| | | "context" |
| | | "flag" |
| | | "fmt" |
| | | "os" |
| | | "os/signal" |
| | | "sync" |
| | | "syscall" |
| | | |
| | | "vamicro/config" |
| | | "vamicro/version-control/api" |
| | | "vamicro/version-control/controller" |
| | | "vamicro/version-control/service" |
| | | |
| | | "basic.com/valib/bhomeclient.git" |
| | | "basic.com/valib/bhomedbapi.git" |
| | | "basic.com/valib/logger.git" |
| | | "basic.com/valib/version.git" |
| | | ) |
| | | |
| | | var ( |
| | | env = flag.String("e", "pro", "") |
| | | procName = service.ProcName |
| | | proc = &bhomeclient.ProcInfo{ |
| | | Name: procName, //进程名称 |
| | | ID: procName, //进程id |
| | | Info: "", //进程的描述信息,用于区分同一进程名称下多个进程 |
| | | } |
| | | ) |
| | | |
| | | func init() { |
| | | flag.Parse() |
| | | vaversion.Usage() |
| | | |
| | | config.Init(*env) |
| | | |
| | | // 日志初始化 |
| | | var logFile = config.LogConf.Path + "vamicro-" + procName + ".log" |
| | | logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge) |
| | | logger.Info("log init success !") |
| | | } |
| | | |
| | | func main() { |
| | | //防止多进程运行 |
| | | lockFile := "/tmp/run/version-control.lock" |
| | | var lock *os.File |
| | | lock, err := os.Create(lockFile) |
| | | if err != nil { |
| | | fmt.Println("create lock file error", err) |
| | | os.Exit(1) |
| | | } |
| | | |
| | | defer os.Remove(lockFile) |
| | | defer lock.Close() |
| | | |
| | | err = syscall.Flock(int(lock.Fd()), syscall.LOCK_EX|syscall.LOCK_NB) |
| | | if err != nil { |
| | | fmt.Println("report service is running ") |
| | | os.Exit(1) |
| | | } |
| | | |
| | | defer syscall.Flock(int(lock.Fd()), syscall.LOCK_UN) |
| | | |
| | | wg := &sync.WaitGroup{} |
| | | q := make(chan os.Signal, 1) |
| | | signal.Notify(q, os.Interrupt, os.Kill, syscall.SIGTERM) |
| | | |
| | | fm, pubTopics := initFuncMap() |
| | | ctx, cancel := context.WithCancel(context.Background()) |
| | | |
| | | var reg = &bhomeclient.RegisterInfo{ |
| | | Proc: *proc, |
| | | Channel: nil, |
| | | PubTopic: pubTopics, |
| | | SubTopic: []string{}, |
| | | } |
| | | ms, err := bhomeclient.NewMicroNode(ctx, q, config.Server.AnalyServerId, reg, nil) |
| | | if err != nil { |
| | | return |
| | | } |
| | | bhomedbapi.InitGetNetNode(ms.GetLocalNetNodeByTopic) |
| | | bhomedbapi.InitDoReq(ms.RequestOnly) |
| | | bhomedbapi.InitLog(logger.Debug) |
| | | |
| | | server := api.InitRouter(wg, ms) |
| | | |
| | | go ms.StartServer(fm) |
| | | |
| | | go service.SelfUpdateStart(ctx, ms) //自动更新 |
| | | |
| | | go service.NoticeTick(ctx) //更新提醒 |
| | | |
| | | go service.AuthorizationUpdate(ctx, ms) //更新授权 |
| | | |
| | | go service.BakSchedule(ctx) |
| | | |
| | | <-q |
| | | logger.Info("user signalled...") |
| | | |
| | | // shutdown http service gracefully |
| | | if err := server.Shutdown(ctx); nil != err { |
| | | logger.Fatal("server shutdown failed, err:", err) |
| | | } |
| | | |
| | | cancel() |
| | | wg.Wait() |
| | | logger.Info("all sub threads exited...") |
| | | |
| | | //upgrade.CheckVersion() |
| | | |
| | | //fmt.Println("appver.BuildTime:", appver.BuildTime, "IvyTest:", IvyTest) |
| | | //ctx, cancel := context.WithCancel(context.Background()) |
| | | } |
| | | |
| | | const urlPrefix = "/data/api-v" |
| | | |
| | | func initFuncMap() (map[string]bhomeclient.MicroFunc, []string) { |
| | | funcMap := make(map[string]bhomeclient.MicroFunc) |
| | | vController := new(controller.VersionController) |
| | | |
| | | funcMap[urlPrefix+"/version/check"] = vController.VersionCheck |
| | | funcMap[urlPrefix+"/version/upgrade"] = vController.UpgradeVersion |
| | | funcMap[urlPrefix+"/version/snBus"] = vController.SnWithBus |
| | | |
| | | var pubTopics []string |
| | | for key, _ := range funcMap { |
| | | pubTopics = append(pubTopics, key) |
| | | } |
| | | return funcMap, pubTopics |
| | | } |
| | | package main
|
| | |
|
| | | import (
|
| | | "context"
|
| | | "flag"
|
| | | "fmt"
|
| | | "os"
|
| | | "os/signal"
|
| | | "sync"
|
| | | "syscall"
|
| | |
|
| | | "vamicro/config"
|
| | | "vamicro/version-control/api"
|
| | | "vamicro/version-control/controller"
|
| | | "vamicro/version-control/service"
|
| | |
|
| | | "basic.com/valib/bhomeclient.git"
|
| | | "basic.com/valib/bhomedbapi.git"
|
| | | "basic.com/valib/logger.git"
|
| | | "basic.com/valib/version.git"
|
| | | )
|
| | |
|
| | | var (
|
| | | env = flag.String("e", "pro", "")
|
| | | procName = service.ProcName
|
| | | proc = &bhomeclient.ProcInfo{
|
| | | Name: procName, //进程名称
|
| | | ID: procName, //进程id
|
| | | Info: "", //进程的描述信息,用于区分同一进程名称下多个进程
|
| | | }
|
| | | )
|
| | |
|
| | | func init() {
|
| | | flag.Parse()
|
| | | vaversion.Usage()
|
| | |
|
| | | config.Init(*env)
|
| | |
|
| | | // 日志初始化
|
| | | var logFile = config.LogConf.Path + "vamicro-" + procName + ".log"
|
| | | logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge)
|
| | | logger.Info("log init success !")
|
| | | }
|
| | |
|
| | | func main() {
|
| | | //防止多进程运行
|
| | | lockFile := "/tmp/run/version-control.lock"
|
| | | var lock *os.File
|
| | | lock, err := os.Create(lockFile)
|
| | | if err != nil {
|
| | | fmt.Println("create lock file error", err)
|
| | | os.Exit(1)
|
| | | }
|
| | |
|
| | | defer os.Remove(lockFile)
|
| | | defer lock.Close()
|
| | |
|
| | | err = syscall.Flock(int(lock.Fd()), syscall.LOCK_EX|syscall.LOCK_NB)
|
| | | if err != nil {
|
| | | fmt.Println("report service is running ")
|
| | | os.Exit(1)
|
| | | }
|
| | |
|
| | | defer syscall.Flock(int(lock.Fd()), syscall.LOCK_UN)
|
| | |
|
| | | wg := &sync.WaitGroup{}
|
| | | q := make(chan os.Signal, 1)
|
| | | signal.Notify(q, os.Interrupt, os.Kill, syscall.SIGTERM)
|
| | |
|
| | | fm, pubTopics := initFuncMap()
|
| | | ctx, cancel := context.WithCancel(context.Background())
|
| | |
|
| | | var reg = &bhomeclient.RegisterInfo{
|
| | | Proc: *proc,
|
| | | Channel: nil,
|
| | | PubTopic: pubTopics,
|
| | | SubTopic: []string{},
|
| | | }
|
| | | ms, err := bhomeclient.NewMicroNode(ctx, q, config.Server.AnalyServerId, reg, nil)
|
| | | if err != nil {
|
| | | return
|
| | | }
|
| | | bhomedbapi.InitGetNetNode(ms.GetLocalNetNodeByTopic)
|
| | | bhomedbapi.InitDoReq(ms.RequestOnly)
|
| | | bhomedbapi.InitLog(logger.Debug)
|
| | |
|
| | | server := api.InitRouter(wg, ms)
|
| | |
|
| | | go ms.StartServer(fm)
|
| | |
|
| | | go service.SelfUpdateStart(ctx, ms) //自动更新
|
| | |
|
| | | go service.NoticeTick(ctx) //更新提醒
|
| | |
|
| | | go service.AuthorizationUpdate(ctx, ms) //更新授权
|
| | |
|
| | | go service.BakSchedule(ctx)
|
| | |
|
| | | <-q
|
| | | logger.Info("user signalled...")
|
| | |
|
| | | // shutdown http service gracefully
|
| | | if err := server.Shutdown(ctx); nil != err {
|
| | | logger.Fatal("server shutdown failed, err:", err)
|
| | | }
|
| | |
|
| | | cancel()
|
| | | wg.Wait()
|
| | | logger.Info("all sub threads exited...")
|
| | |
|
| | | //upgrade.CheckVersion()
|
| | |
|
| | | //fmt.Println("appver.BuildTime:", appver.BuildTime, "IvyTest:", IvyTest)
|
| | | //ctx, cancel := context.WithCancel(context.Background())
|
| | | }
|
| | |
|
| | | const urlPrefix = "/data/api-v"
|
| | |
|
| | | func initFuncMap() (map[string]bhomeclient.MicroFunc, []string) {
|
| | | funcMap := make(map[string]bhomeclient.MicroFunc)
|
| | | vController := new(controller.VersionController)
|
| | |
|
| | | funcMap[urlPrefix+"/version/check"] = vController.VersionCheck
|
| | | funcMap[urlPrefix+"/version/upgrade"] = vController.UpgradeVersion
|
| | | funcMap[urlPrefix+"/version/snBus"] = vController.SnWithBus
|
| | |
|
| | | var pubTopics []string
|
| | | for key, _ := range funcMap {
|
| | | pubTopics = append(pubTopics, key)
|
| | | }
|
| | | return funcMap, pubTopics
|
| | | }
|