123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package entity
- import (
- "encoding/json"
- "sync"
- "time"
- )
- var (
- TimeWindowProducerQueue []TimeWindow
- TimeWindowProducerQueueMutex sync.RWMutex
- TimeWindowProducerChannel = make(chan TimeWindow)
- TimeWindowConsumerQueue []TimeWindow
- TimeWindowConsumerQueueMutex sync.RWMutex
- TimeWindowConsumerChannel = make(chan TimeWindow)
- TcpSendTime = time.Date(2023, time.November, 23, 10, 30, 0, 0, time.UTC)
- TcpSendTimeMutex sync.Mutex
- ProcessingFlag = false // 是否有数据正在被处理
- )
- type TimeWindow struct {
- FaultTime string `json:"FaultTime"`
- TimeWindowBegin string `json:"TimeWindowBegin"`
- TimeWindowEnd string `json:"TimeWindowEnd"`
- Labels []string `json:"Labels"`
- TriggerIds []string `json:"TriggerIds"`
- Length int `json:"Length"`
- CanUpload string `json:"CanUpload"`
- MasterTopics []string `json:"MasterTopics"`
- SlaveTopics []string `json:"SlaveTopics"`
- }
- func RefreshTcpSendTime() {
- TcpSendTimeMutex.Lock()
- TcpSendTime = time.Now()
- TcpSendTimeMutex.Unlock()
- }
- func AddTimeWindowToTimeWindowProducerQueue(window TimeWindow) {
- TimeWindowProducerQueueMutex.RLock()
- {
- TimeWindowProducerQueue = append(TimeWindowProducerQueue, window)
- }
- TimeWindowProducerQueueMutex.RUnlock()
- }
- func AddTimeWindowToTimeWindowConsumerQueue(window TimeWindow) {
- TimeWindowConsumerQueueMutex.RLock()
- {
- TimeWindowConsumerQueue = append(TimeWindowConsumerQueue, window)
- }
- TimeWindowConsumerQueueMutex.RUnlock()
- }
- func RemoveHeadOfTimeWindowProducerQueue() {
- TimeWindowProducerQueueMutex.RLock()
- {
- TimeWindowProducerQueue = TimeWindowProducerQueue[1:]
- }
- TimeWindowProducerQueueMutex.RUnlock()
- }
- func RemoveHeadOfTimeWindowConsumerQueue() {
- TimeWindowConsumerQueueMutex.RLock()
- {
- TimeWindowConsumerQueue = TimeWindowConsumerQueue[1:]
- }
- TimeWindowConsumerQueueMutex.RUnlock()
- }
- // GetLastTimeWindow 获取最后一个时间窗口
- func GetLastTimeWindow() *TimeWindow {
- var lastTimeWindow *TimeWindow // 获取最后一个时间窗口
- if len(TimeWindowProducerQueue) > 0 {
- lastTimeWindow = &TimeWindowProducerQueue[len(TimeWindowProducerQueue)-1]
- }
- return lastTimeWindow
- }
- func TimeWindowToJson(msg TimeWindow) (string, error) {
- jsonData, err := json.Marshal(msg)
- if err != nil {
- return "", err
- }
- return string(jsonData), nil
- }
|