package priority import ( "os" "pbx-api-gin/pkg/lfshook" "strconv" "github.com/sirupsen/logrus" "gopkg.in/ini.v1" ) var ICPAnswer = 0 var OCCAnswer = 0 var RunningTypePriority = 0 var RunningType = "" var SpecialVoice = 0 var RunningPATaskChan = "" type PriorityAll struct { ManuPa string `json:"manualPa"` CabCab string `json:"cabCab"` PADICP string `json:"padIcp"` PADTMS string `json:"padTms"` PADOCC string `json:"padOcc"` CPA string `json:"cpa"` EMG string `json:"emg"` SPC string `json:"spc"` DCS string `json:"dcs"` STN string `json:"stn"` CHK string `json:"chk"` VOL string `json:"vol"` } var Priority PriorityAll func GetPriority() { filePath := "/etc/asterisk/priority.conf" _, err := os.Stat(filePath) if err != nil { logrus.Error(err) return } iniFile, err := ini.Load(filePath) if err != nil { logrus.Error(err) return } Priority.CHK = iniFile.Section("general").Key("CHK").Value() Priority.STN = iniFile.Section("general").Key("STN").Value() Priority.DCS = iniFile.Section("general").Key("DCS").Value() Priority.SPC = iniFile.Section("general").Key("SPC").Value() Priority.EMG = iniFile.Section("general").Key("EMG").Value() Priority.CPA = iniFile.Section("general").Key("CPA").Value() Priority.PADOCC = iniFile.Section("general").Key("PAD-OCC").Value() Priority.PADTMS = iniFile.Section("general").Key("PAD-TMS").Value() Priority.PADICP = iniFile.Section("general").Key("PAD-ICP").Value() Priority.CabCab = iniFile.Section("general").Key("CabCab").Value() Priority.ManuPa = iniFile.Section("general").Key("ManuPa").Value() Priority.VOL = iniFile.Section("general").Key("VOL").Value() } func GetPriorityByKey(key string) string { filePath := "/etc/asterisk/priority.conf" _, err := os.Stat(filePath) if err != nil { logrus.Error(err) return "" } iniFile, err := ini.Load(filePath) if err != nil { logrus.Error(err) return "" } return iniFile.Section("general").Key(key).Value() } // check priority , if the running priority is lowwer than the to run priority func CheckPriority(runType string) bool { lfshook.NewLogger().Logger.Infof("=========Check Pri runType:%s====RunningTypePriority:%d============", runType, RunningTypePriority) //check special voice if SpecialVoice == 1 { return false } //no any runing task if RunningTypePriority == 0 { return true } //get the priority to run in the config file ret, err := strconv.Atoi(GetPriorityByKey(runType)) if err != nil { logrus.Error(err) return false } lfshook.NewLogger().Logger.Infof("=========Check Pri GetPriorityByKey:%d============", ret) //if the running task priority is lowwer if ret < RunningTypePriority && ret != 0 { return true } return false }