package master import ( "analysis/app" "analysis/logo" "analysis/util" "context" "io/ioutil" "basic.com/libgowrapper/sdkstruct.git" ) func reaper(ctxt context.Context) { pidChan := make(chan int, 1) Reap(pidChan) go waitForRestart(ctxt, pidChan) } // Run run func Run(ctx context.Context, configPath string) bool { reaper(ctx) rPath := configPath configFile := configPath var fetcher *Fetcher fs, _ := ioutil.ReadDir(rPath) for _, file := range fs { if !file.IsDir() { if rPath[len(rPath)-1] != '/' { configFile = rPath + "/" + file.Name() } else { configFile = rPath + file.Name() } cfg, err := app.ReadConfig(configFile) if err != nil { logo.Errorln("Run Fetcher Master Read From File: ", configFile, " Config Error: ", err) continue } fetcher = NewFetcher(cfg.SoFile) if fetcher == nil { logo.Errorln("New Fetcher Load so File Funcs Error From File: ", cfg.SoFile) continue } } } if fetcher == nil { logo.Errorln("!!!!!!Read All So File, But Can't Init DB Fetcher") return false } logo.Infoln("~~~~~~Created Fetcher, Now Sync From DB") // fetcher.fnInitDBAPI(util.FSI.IP, util.FSI.HTTPort, util.FSI.HBPort, util.FSI.DataPort, logo.Infoln) fetcher.fnInitDBAPI("192.168.20.10", util.FSI.HTTPort, util.FSI.HBPort, util.FSI.DataPort, logo.Infoln) sdks := fetcher.fnSDKInfo() return manualStart(ctx, sdks, configPath) } func manualStart(ctx context.Context, sdks []sdkstruct.SDKInfo, configPath string) bool { rPath := configPath for _, v := range sdks { file := rPath + v.SdkType + ".json" if rPath[len(rPath)-1] != '/' { file = rPath + "/" + v.SdkType + ".json" } cfg, err := app.ReadConfig(file) if err != nil { logo.Errorln("Master Read: ", file, " Config Error: ", err) continue } logo.Infoln(file, " CONFIG: ", cfg) args := []string{ `-role=slave`, "-sdk=" + v.SdkType, "-id=" + v.IpcID, "-" + util.ConfigPath + "=" + file, } args = append(args, app.GetParams(util.ConfigPath, file)...) pid, err := runProc(ctx, "./analysis", args, &cfg.Env) if err != nil { logo.Errorf("ANALYSIS START SLAVE PROC %s IPC: %s error %+v\n", v.SdkType, v.IpcID, err) } logo.Infof("START SDK %s ID %s PID %d Env: %s\n", v.SdkType, v.IpcID, pid, cfg.Env) } return true }