package main import ( "net/http" "flag" _ "net/http/pprof" "time" "taskpubsub/camera" "taskpubsub/sdk" "taskpubsub/tasktag" "taskpubsub/util" "basic.com/valib/logger.git" "github.com/spf13/viper" ) var initchan = make(chan bool) var useShm bool const ( configFilePath = "/opt/vasystem/config/" configFileType = "yaml" LOGBASEPATH = "/data/disk1/valog/taskpubsub.log" ) var envirment = flag.String("e", "pro", "") func init(){ viper.SetConfigType(configFileType) viper.SetConfigName(*envirment) viper.AddConfigPath(configFilePath) viper.AddConfigPath("./") err := viper.ReadInConfig() if err != nil { logger.Error("viper.ReadInConfig() Error") //panic(err) } var logFile = LOGBASEPATH if viper.GetString("LogBasePath") != "" { logFile = viper.GetString("LogBasePath") + "/taskpubsub.log" } // 日志初始化 if viper.IsSet("LogLevel") && viper.GetInt("LogLevel") >= logger.PanicLevel && viper.GetInt("LogLevel") <= logger.DebugLevel { logger.Config(logFile, viper.GetInt("LogLevel")) }else{ logger.Config(logFile, logger.DebugLevel) } var logSaveDays = 15 logger.SetSaveDays(logSaveDays) logger.Info("loginit success !") flag.BoolVar(&useShm, "shm", false, "use shm for performance") } func main() { flag.Parse() time.Sleep(time.Second) if useShm{ logger.Info("USE SHARE MEMORY") }else{ logger.Info("USE PIPE") } // pprof 用于分析性能 go func() { logger.Info(http.ListenAndServe("0.0.0.0:6061", nil)) }() go util.Init(initchan) logger.Info("init ok !!!!, start sdk, task, camera init process ....", <-initchan) sdk.Init(useShm) // 获取所有算法id ,建立 sdk 主题, 建立sdk server(send, recv 运行) tasktag.Init() // 获取所有任务,建立任务标签, 在数据进入时, 打标签 camera.Init(useShm) //获取cid, taskid, sdkid ,关系 select {} }