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/" configFileName = "config" configFileType = "json" LOGBASEPATH = "/data/disk1/valog/taskpubsub.log" ) func init(){ viper.SetConfigType(configFileType) viper.SetConfigName(configFileName) viper.AddConfigPath(configFilePath) viper.AddConfigPath("./") err := viper.ReadInConfig() if err != nil { panic(err) } var logFile = LOGBASEPATH if viper.GetString("LogBasePath") != "" { logFile = viper.GetString("LogBasePath") + "/taskpubsub.log" } var logSaveDays = 15 // 日志初始化 logger.Config(logFile, logger.InfoLevel) 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 {} }