From 8324f872ef3a4d0c978a9b1d062800c6a1701c12 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 01 十二月 2023 09:58:17 +0800
Subject: [PATCH] fix

---
 service/plc.go |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/service/plc.go b/service/plc.go
index e993d96..c577998 100644
--- a/service/plc.go
+++ b/service/plc.go
@@ -15,7 +15,6 @@
 	"fmt"
 	"github.com/spf13/cast"
 	"sync"
-	"sync/atomic"
 )
 
 // 涓插彛涓嶆敮鎸佸苟琛岃鍐欙紝鎵�浠ラ渶瑕佸姞涓攣锛岄槻姝imeout鍜岃祫婧愪笉鍙敤鎶ラ敊
@@ -204,42 +203,46 @@
 }
 
 func dealErr(err error) {
-	fmt.Println("deal err:", err)
 	if err != nil {
-		fmt.Println("deal err not nil:", err.Error())
 		FailureRemainingOpportunitiesDecr() //鍑忓皯澶辫触鍓╀綑鏈轰細
 	} else {
-		fmt.Println("deal err nil")
 		FailureRemainingOpportunitiesReset() //閲嶇疆澶辫触鍓╀綑鏈轰細
 	}
 }
 
-var connectionStatus atomic.Bool
-
-var failureRemainingOpportunities atomic.Int64
+var connectionStatus sync.Map
 
 const (
 	defaultFailureRemainingOpportunities = 20
 )
 
 func IsConnect() bool {
-	return connectionStatus.Load()
+	val, ok := connectionStatus.Load(conf.Conf.CurrentDeviceID)
+	if !ok {
+		return false
+	}
+	failureRemainingOpportunities := val.(int)
+	return failureRemainingOpportunities > 0
 }
 
 func FailureRemainingOpportunitiesDecr() {
-	newValue := failureRemainingOpportunities.Add(-1)
-	if newValue <= 0 {
-		connectionStatus.Store(false)
+	val, ok := connectionStatus.Load(conf.Conf.CurrentDeviceID)
+	if !ok {
+		return
 	}
+	failureRemainingOpportunities := val.(int)
+	if failureRemainingOpportunities > 0 {
+		failureRemainingOpportunities--
+	}
+	connectionStatus.Store(conf.Conf.CurrentDeviceID, failureRemainingOpportunities)
 	return
 }
 
 func FailureRemainingOpportunitiesReset() {
-	if failureRemainingOpportunities.Load() < defaultFailureRemainingOpportunities {
-		failureRemainingOpportunities.Store(defaultFailureRemainingOpportunities)
-	}
-	if connectionStatus.Load() == false {
-		connectionStatus.Store(true)
+	val, ok := connectionStatus.Load(conf.Conf.CurrentDeviceID)
+	if !ok || val.(int) < defaultFailureRemainingOpportunities {
+		connectionStatus.Store(conf.Conf.CurrentDeviceID, defaultFailureRemainingOpportunities)
+		return
 	}
 	return
 }

--
Gitblit v1.8.0