Эх сурвалжийг харах

fit: 单点位增加WaitValue方法, 以为点位值变化是否符合目标值

gaoyagang 11 сар өмнө
parent
commit
b2df08ae8b
2 өөрчлөгдсөн 40 нэмэгдсэн , 0 устгасан
  1. 29 0
      envitem/func.go
  2. 11 0
      envitem/func_test.go

+ 29 - 0
envitem/func.go

@@ -417,6 +417,35 @@ func (e *EnvItem) IncreAdjust(expire time.Duration) (int64, error) {
 	return intCmd.Val(), nil
 }
 
+// WaitValue 等待点位的值, 变为指定值
+// v: 等待的值
+// op: -1: 小于, 0: 等于, 1: 大于
+// interval: 轮询间隔
+// retry: 最多尝试次数 0: 表示不限制
+func (e *EnvItem) WaitValue(v string, op int, interval time.Duration, retry int) <-chan bool {
+	c := make(chan bool)
+	go func() {
+		t := 0
+		for {
+			val, _, err := e.getCurrentValue()
+			if err == nil && strings.Compare(v, val) == op {
+				c <- true
+			}
+
+			if retry > 0 {
+				t += 1
+				if t >= retry {
+					c <- false
+				}
+			}
+
+			time.Sleep(interval)
+		}
+	}()
+
+	return c
+}
+
 func (e *EnvItem) ClearAdjust() {
 	if adjustValue == false {
 		return

+ 11 - 0
envitem/func_test.go

@@ -147,3 +147,14 @@ func TestEnvItem_GetValueForAdjust(t *testing.T) {
 
 	t.Log(v)
 }
+
+func TestEnvItem_WaitEqValue(t *testing.T) {
+	SetOptions(Options{GtServerIp: "47.96.12.136:8788", Cache: cache, AdjustValue: false})
+	e := &EnvItem{
+		ProjectId: 92,
+		Item:      "C.M.UF1_DB@time_production_display",
+	}
+	c := e.WaitValue("2755", -1, 3*time.Second, 20)
+
+	t.Log(<-c)
+}