From c46b023d7a165d4b1a32f2b6fdc00d66334597f1 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期六, 11 一月 2020 16:59:55 +0800
Subject: [PATCH] debug

---
 main.go |  140 +++++++++++++++++++++++-----------------------
 1 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/main.go b/main.go
index 0c7c0fa..02e2e6c 100644
--- a/main.go
+++ b/main.go
@@ -2,19 +2,22 @@
 
 import (
 	"analysis/logo"
-	"analysis/proc"
 	"analysis/util"
+	"fmt"
+	"os/exec"
+	"os/signal"
+	"runtime/debug"
 	"strconv"
+	"syscall"
+	"time"
+
+	"analysis/app/master"
+	"analysis/app/slave"
 
 	"context"
 	"flag"
 
 	"os"
-	"os/signal"
-
-	"golang.org/x/sys/unix"
-
-	"basic.com/valib/gogpu.git"
 	// "net/http"
 	// _ "net/http/pprof"
 )
@@ -27,41 +30,26 @@
 	gpu     int
 	shm     bool
 	ruleIPC string
-	soFile  string
+
+	configPath string
 )
 
 const (
-	master = `master`
-	slave  = `slave`
-	single = `single`
+	roleMaster = `master`
+	roleSlave  = `slave`
 )
 
 func init() {
-	flag.BoolVar(&logit, "logit", false, "use logger,default flase")
-	flag.StringVar(&role, "role", single, "run process role master/slave/single, default single")
-	flag.StringVar(&runType, "sdk", util.FeatAll, "run sdk type, face/facedetect/facecompare/yolo,etc.")
+	flag.StringVar(&role, "role", roleMaster, "run process role master/slave, default master")
+	flag.StringVar(&runType, "sdk", util.FeatAll, "run sdk type, facedetect/yolo,etc.")
 	flag.StringVar(&id, "id", util.FakeSdkID, "sdk id as ipc label")
-	flag.IntVar(&gpu, "gpu", -1, "gpu index")
-	flag.BoolVar(&shm, "shm", false, "use shm for performance")
 
-	flag.StringVar(&soFile, "so-file", "./", "libcffmpeg.so path")
+	flag.StringVar(&configPath, util.ConfigPath, "", "sdk config file path")
 
-	// 浜鸿劯璇嗗埆鍙傛暟
-	flag.IntVar(&util.SFI.DetectThrd, util.FaceDetectThread, util.SFI.DetectThrd, "face detect max thread count")
-	flag.IntVar(&util.SFI.DetectNum, util.FaceDetectNum, util.SFI.DetectNum, "face detect min face count")
-	flag.IntVar(&util.SFI.DetectAngle, util.FaceDetectAngle, util.SFI.DetectAngle, "face detect face angle")
-	flag.IntVar(&util.SFI.PropThrd, util.FacePropertyThread, util.SFI.PropThrd, "face property max thread count")
-	flag.IntVar(&util.SFI.ExtractThrd, util.FaceExtractThread, util.SFI.ExtractThrd, "face extract max thread count")
-	flag.IntVar(&util.SFI.TrackInterval, util.FaceTrackInterval, util.SFI.TrackInterval, "face track needed interval")
-	flag.IntVar(&util.SFI.SampleSize, util.FaceTrackSample, util.SFI.SampleSize, "face track sample size")
+	flag.BoolVar(&logit, util.LogIt, false, "use logger,default flase")
+	flag.BoolVar(&shm, util.SHM, false, "use shm for performance")
 
-	// 杞﹁締淇℃伅
-	// 鎺堟潈鏈嶅姟璺緞
-	flag.StringVar(&util.SCI.LicenseServerPath, util.CarSDKLicense, util.SCI.LicenseServerPath, "car detect lic server bin path")
-	flag.IntVar(&util.SCI.MaxImageWidth, util.CarMaxImageWidth, util.SCI.MaxImageWidth, "car detect image width")
-	flag.IntVar(&util.SCI.MaxImageHeight, util.CarMaxImageHeight, util.SCI.MaxImageHeight, "car detect image height")
-	// cloud plate
-	flag.StringVar(&util.SCI.Model, util.CarSDKModel, util.SCI.Model, "cloud palte detector model")
+	flag.IntVar(&gpu, util.GPU, -1, "gpu index")
 
 	// 鎸囧畾鑾峰彇閰嶇疆淇℃伅浠巗qlite,鏈夋渶楂樹紭鍏堢骇, master浣跨敤
 	flag.StringVar(&util.FSI.IP, util.FetchSrvIP, util.FSI.IP, "fetch server ip, like camera info")
@@ -86,19 +74,6 @@
 }
 
 func setParamters() {
-	util.FillParams(util.FaceDetectThread, strconv.Itoa(util.SFI.DetectThrd))
-	util.FillParams(util.FaceDetectNum, strconv.Itoa(util.SFI.DetectNum))
-	util.FillParams(util.FaceDetectAngle, strconv.Itoa(util.SFI.DetectAngle))
-	util.FillParams(util.FacePropertyThread, strconv.Itoa(util.SFI.PropThrd))
-	util.FillParams(util.FaceExtractThread, strconv.Itoa(util.SFI.ExtractThrd))
-	util.FillParams(util.FaceTrackInterval, strconv.Itoa(util.SFI.TrackInterval))
-	util.FillParams(util.FaceTrackSample, strconv.Itoa(util.SFI.SampleSize))
-
-	util.FillParams(util.CarSDKLicense, util.SCI.LicenseServerPath)
-	util.FillParams(util.CarSDKModel, util.SCI.Model)
-	util.FillParams(util.CarMaxImageWidth, strconv.Itoa(util.SCI.MaxImageWidth))
-	util.FillParams(util.CarMaxImageHeight, strconv.Itoa(util.SCI.MaxImageHeight))
-
 	util.FillParams(util.FetchSrvIP, util.FSI.IP)
 	util.FillParams(util.FetchSrvPort, strconv.Itoa(util.FSI.HTTPort))
 	util.FillParams(util.FetchSrvHeartbeatPort, strconv.Itoa(util.FSI.HBPort))
@@ -106,32 +81,16 @@
 
 	util.FillParams(util.RuleIPC, util.ToRuleIPC)
 
-	util.SetParams("-so-file=" + soFile)
-	util.SetParams("-gpu=" + strconv.Itoa(gpu))
+	util.FillParams(util.GPU, strconv.Itoa(gpu))
 	if logit {
-		util.SetParams("-logit")
+		util.FillParams(util.LogIt, "true")
 	}
 	if shm {
-		util.SetParams("-shm")
+		util.FillParams(util.SHM, "true")
 	}
-
-	// util.FillParams("gpu", strconv.Itoa(gpu))
-	// if logit {
-	// 	util.FillParams("logit", "true")
-	// }
-	// if shm {
-	// 	util.FillParams("shm", "true")
-	// }
-
 }
 
 func main() {
-
-	indices := gogpu.RankGPU()
-	if len(indices) == 0 {
-		logo.Errorln("there is no gpu for valid")
-		return
-	}
 
 	util.InitConfig()
 
@@ -143,22 +102,28 @@
 
 	runLogger()
 
+	if configPath == "" || len(configPath) == 0 {
+		logo.Infoln("!!!!!! SDK CONFIG PATH MUST EXIST !!!!!!")
+		return
+	}
 	logo.Infoln(os.Args)
 	ctx, cancel := context.WithCancel(context.Background())
 
 	ret := false
-	if role == single {
-		ret = proc.SingleRole(ctx, runType, id, gpu, shm)
-	} else if role == master {
+	if role == roleMaster {
+		defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405"))
 		setParamters()
-		ret = proc.MasterRole(ctx)
-	} else if role == slave {
-		ret = proc.SingleRole(ctx, runType, id, gpu, shm)
+		ret = master.Run(ctx, "./libcomm.so", configPath)
+
+	} else if role == roleSlave {
+		ret = slave.Run(ctx, configPath, runType, id, gpu, shm)
+	} else if role == "test" {
+		ret = slave.TwoPluginConflict("./libcomm.so", "./zconf/Yolo.json")
 	}
 
 	if ret {
 		c := make(chan os.Signal, 1)
-		signal.Notify(c, os.Interrupt, os.Kill, unix.SIGTERM)
+		signal.Notify(c, os.Interrupt, os.Kill, syscall.SIGTERM)
 		<-c
 	}
 
@@ -166,3 +131,38 @@
 
 	logo.Close()
 }
+
+// const (
+// 	configFilePath = "/opt/vasystem/config/"
+// 	configFileName = "sdkconfig"
+// 	configFileType = "yaml"
+// )
+// viper.SetConfigType(configFileType)
+// viper.SetConfigName(configFileName)
+// viper.AddConfigPath(configFilePath)
+// viper.AddConfigPath("./")
+
+// envString := ""
+
+func dump(dumpFile string) {
+	dumpErr := recover()
+	if dumpErr == nil {
+		return
+	}
+	f, err := os.Create(dumpFile)
+	if err != nil {
+		return
+	}
+	f.WriteString(fmt.Sprintf("panic:\r\n%v", dumpErr))
+	f.WriteString("\r\n\nstack:\r\n")
+	f.WriteString(string(debug.Stack()))
+	f.Close()
+
+	//////////////////////////////////////////////
+	// restart master
+
+	cmd := exec.Command(os.Args[0], os.Args[1:]...)
+	cmd.Stdout = os.Stdout
+	cmd.Stderr = os.Stderr
+	cmd.Start()
+}

--
Gitblit v1.8.0