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 BroadcastResumeParas struct { FileName string `json:"filename"` Count int `json:"count"` Delay int `json:"delay"` BroadcastType string `json:"broadcastType"` } var ResumeEmgPara BroadcastResumeParas 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 { switch key { case "VOL": return Priority.VOL case "CHK": return Priority.CHK case "STN": return Priority.STN case "DCS": return Priority.DCS case "SPC": return Priority.SPC case "EMG": return Priority.EMG case "CPA": return Priority.CPA case "PAD-OCC": return Priority.PADOCC case "PAD-TMS": return Priority.PADTMS case "PAD-ICP": return Priority.PADICP case "CabCab": return Priority.CabCab case "ManuPa": return Priority.ManuPa default: return "" } } // 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 } // Clean all priority tag func CleanPriorityTag() { ICPAnswer = 0 OCCAnswer = 0 RunningTypePriority = 0 RunningType = "" SpecialVoice = 0 RunningPATaskChan = "" }