From 4f04056f8b70a467fe17cd989f284b5d23d34ed4 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期日, 20 十月 2024 16:16:20 +0800
Subject: [PATCH] debug osd
---
nvcs/cache.go | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/nvcs/cache.go b/nvcs/cache.go
index e792c55..55baeef 100644
--- a/nvcs/cache.go
+++ b/nvcs/cache.go
@@ -1,6 +1,7 @@
package nvcs
import (
+ "container/list"
"fmt"
"time"
@@ -10,13 +11,13 @@
)
type simpleCache struct {
- data map[int64]elevatorRunData
+ data *list.List
expiration time.Duration
}
func newCache(expiration time.Duration) *simpleCache {
return &simpleCache{
- data: make(map[int64]elevatorRunData),
+ data: list.New(),
expiration: expiration,
}
}
@@ -31,9 +32,11 @@
data.Floor = gRFIDFloor
}
+ lastData := c.data.Back()
+
// 濡傛灉妤煎眰鐩稿悓锛屽苟涓旀暟鎹湪1绉掑唴锛屽垯蹇界暐
- if existingData, ok := c.data[data.Timestamp]; ok {
- if existingData.Floor == data.Floor {
+ if lastData != nil && lastData.Value.(elevatorRunData).Timestamp == data.Timestamp {
+ if lastData.Value.(elevatorRunData).Floor == data.Floor {
return
}
}
@@ -72,14 +75,23 @@
go addFloorToOSD(floorText)
}
- c.data[data.Timestamp] = data
+ c.data.PushBack(data)
}
// 鍒犻櫎杩囨湡鏁版嵁
func (c *simpleCache) cleanExpired() {
- for t := range c.data {
- if time.Since(time.Unix(t, 0)) > c.expiration {
- delete(c.data, t)
+ now := time.Now()
+
+ // 浠庨槦鍒楀ご閮ㄥ紑濮嬫鏌ユ槸鍚︽湁杩囨湡鏁版嵁
+ for c.data.Len() > 0 {
+ elem := c.data.Front() // 鑾峰彇闃熷垪澶撮儴鐨勫厓绱�
+ item := elem.Value.(elevatorRunData)
+ if now.Sub(time.Unix(item.Timestamp, 0)) > c.expiration {
+ // 濡傛灉鏁版嵁宸茬粡杩囨湡锛屽垯浠庨槦鍒椾腑鍒犻櫎
+ c.data.Remove(elem)
+ } else {
+ // 鍥犱负鏁版嵁鎸夋椂闂撮『搴忓瓨鍌紝閬囧埌涓嶈繃鏈熺殑鏁版嵁鍚庡氨鍙互鍋滄妫�鏌�
+ break
}
}
}
--
Gitblit v1.8.0