root 2 nedēļas atpakaļ
vecāks
revīzija
09621e8a81

+ 13 - 3
internal/app/ami/action/call.go

@@ -10,6 +10,7 @@ import (
 	"pbx-api-gin/pkg/utils"
 	"sort"
 	"strings"
+	"sync"
 	"time"
 )
 
@@ -793,9 +794,14 @@ func ICPConfbridgeReinvite(confID, paType string) {
 	}
 }
 
+var waitMutex sync.Mutex
+
 // 设置全局变量控制任务创建过程,避免被其他任务打乱任务创建过程
 func WaitTaskCreate(task string, args ...string) { //arg1(task chan)
-	utils.LoggerDebug.Printf("%s check task creating ..... ", task)
+	utils.LoggerDebug.Printf("%s check task creating ..... ,TaskCreating = %s", task, priority.TaskCreating)
+
+	waitMutex.Lock()
+	defer waitMutex.Unlock()
 
 	switch priority.TaskCreating {
 	case "C2C":
@@ -823,7 +829,7 @@ func WaitTaskCreate(task string, args ...string) { //arg1(task chan)
 		}
 		return
 	case "CPA":
-		if task == "PA" || task == "C2C" {
+		if task == "PA" /*|| task == "C2C"*/ {
 			//获取正在创建的任务的优先级
 			priorityCPA := priority.GetPriorityByKey("CPA")
 			//获取将要创建的任务的优先级
@@ -880,12 +886,16 @@ func WaitTaskCreate(task string, args ...string) { //arg1(task chan)
 			}
 		}
 		return
-	case "*":
+
+	default:
+		//utils.LoggerDebug.Printf("%s waiting trd=============previous task:%s creating ..... ", task, priority.TaskCreating)
+
 		for i := 0; i < 4; i++ {
 			if priority.TaskCreating != "" {
 				utils.LoggerDebug.Printf("%s waiting previous task:%s creating ..... ", task, priority.TaskCreating)
 				time.Sleep(time.Millisecond * 500)
 			} else {
+				utils.LoggerDebug.Printf("TaskCreating is nill, Set TaskCreating=%s", task)
 				priority.TaskCreating = task
 				return
 			}

+ 3 - 0
internal/app/ami/action/index.go

@@ -891,6 +891,9 @@ func HandleAMI(event map[string]string) {
 			}
 			utils.LoggerDebug.Printf("CPA Runing , Set CPA task info %+v .", task)
 			priority.RegistryTask.Register("CPA", task)
+
+			utils.LoggerDebug.Printf("CPA Runing , Set CPA task info %+v .", priority.RegistryTask.ListAll())
+
 			if priority.TaskCreating == "CPA" {
 				priority.TaskCreating = ""
 			}

+ 5 - 0
internal/app/stc/priority/index.go

@@ -4,6 +4,7 @@ import (
 	"os"
 	"pbx-api-gin/pkg/utils"
 	"strconv"
+	"sync"
 
 	"gopkg.in/ini.v1"
 )
@@ -117,9 +118,13 @@ func GetPriorityByKey(key string) int {
 	}
 }
 
+var checkMutex sync.Mutex
+
 // check priority , if the running priority is lowwer than the to run priority
 func CheckPriority(runType string) bool {
 	utils.LoggerDebug.Printf("CheckPriority  TorunType:%s 	SpecialVoice:%d", runType, SpecialVoice)
+	checkMutex.Lock()
+	defer checkMutex.Unlock()
 
 	//Check special voice can not interrupt
 	if SpecialVoice == 1 {