From 15f500210f4bf0ad3f11c97a218366b1bab6b160 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Mon, 8 Sep 2025 23:18:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E4=B9=89=E8=AE=BE=E5=A4=87=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/service/device_status.go | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 internal/service/device_status.go diff --git a/internal/service/device_status.go b/internal/service/device_status.go new file mode 100644 index 0000000..807124f --- /dev/null +++ b/internal/service/device_status.go @@ -0,0 +1,67 @@ +// Package service 提供各种业务服务功能 +package service + +import ( + "sync" +) + +// DeviceStatus 设备状态信息 +type DeviceStatus struct { + // Active 设备是否启动 + Active bool +} + +// DeviceStatusPool 设备状态池,用于管理所有设备的当前状态 +type DeviceStatusPool struct { + // statuses 设备状态映射 设备ID:状态 + statuses map[string]*DeviceStatus + + // mutex 读写锁,保证并发安全 + mutex sync.RWMutex +} + +// NewDeviceStatusPool 创建设备状态池实例 +func NewDeviceStatusPool() *DeviceStatusPool { + return &DeviceStatusPool{ + statuses: make(map[string]*DeviceStatus), + } +} + +// SetStatus 设置设备状态 +func (dsp *DeviceStatusPool) SetStatus(deviceID string, status *DeviceStatus) { + dsp.mutex.Lock() + defer dsp.mutex.Unlock() + + dsp.statuses[deviceID] = status +} + +// GetStatus 获取设备状态 +func (dsp *DeviceStatusPool) GetStatus(deviceID string) (*DeviceStatus, bool) { + dsp.mutex.RLock() + defer dsp.mutex.RUnlock() + + status, exists := dsp.statuses[deviceID] + return status, exists +} + +// DeleteStatus 删除设备状态 +func (dsp *DeviceStatusPool) DeleteStatus(deviceID string) { + dsp.mutex.Lock() + defer dsp.mutex.Unlock() + + delete(dsp.statuses, deviceID) +} + +// GetAllStatuses 获取所有设备状态 +func (dsp *DeviceStatusPool) GetAllStatuses() map[string]*DeviceStatus { + dsp.mutex.RLock() + defer dsp.mutex.RUnlock() + + // 创建副本以避免外部修改 + result := make(map[string]*DeviceStatus) + for id, status := range dsp.statuses { + result[id] = status + } + + return result +}