mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
@@ -38,6 +38,7 @@ type DeviceShadow interface {
|
|||||||
type deviceShadow struct {
|
type deviceShadow struct {
|
||||||
m *sync.Map
|
m *sync.Map
|
||||||
ticker *time.Ticker
|
ticker *time.Ticker
|
||||||
|
mutex *sync.RWMutex // 添加互斥锁
|
||||||
handlerFunc OnlineChangeCallback //上下线执行的回调函数
|
handlerFunc OnlineChangeCallback //上下线执行的回调函数
|
||||||
ttl int
|
ttl int
|
||||||
}
|
}
|
||||||
@@ -50,6 +51,7 @@ func init() {
|
|||||||
ticker: time.NewTicker(time.Second),
|
ticker: time.NewTicker(time.Second),
|
||||||
ttl: 3600, // 默认1小时
|
ttl: 3600, // 默认1小时
|
||||||
handlerFunc: deviceHandler,
|
handlerFunc: deviceHandler,
|
||||||
|
mutex: &sync.RWMutex{},
|
||||||
}
|
}
|
||||||
go shadow.checkOnOff()
|
go shadow.checkOnOff()
|
||||||
DeviceShadowInstance = shadow
|
DeviceShadowInstance = shadow
|
||||||
@@ -79,6 +81,8 @@ func (d *deviceShadow) SetDeviceTTL(ttl int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *deviceShadow) GetDevice(deviceName string) (device Device, err error) {
|
func (d *deviceShadow) GetDevice(deviceName string) (device Device, err error) {
|
||||||
|
d.mutex.RLock()
|
||||||
|
defer d.mutex.RUnlock()
|
||||||
if deviceAny, ok := d.m.Load(deviceName); ok {
|
if deviceAny, ok := d.m.Load(deviceName); ok {
|
||||||
return deviceAny.(Device), nil
|
return deviceAny.(Device), nil
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user