commit 2021-12-16]17:42:53

This commit is contained in:
Godopu 2021-12-16 17:42:57 +09:00
parent 0f1e5e610e
commit 652d936d83

View File

@ -12,6 +12,7 @@ type SyncHandler struct {
devices map[string]*_device
mutex *sync.Mutex
chanForSync map[string]chan map[string]interface{}
states map[string]map[string]interface{}
}
func compareMap(src map[string]interface{}, dst map[string]interface{}) bool {
@ -69,6 +70,7 @@ func (sh *SyncHandler) Handle(e Event) {
origin[key] = value
}
sh.states[device.UUID] = origin
// props := []string{"fan", "light", "servo"}
err := encoder.Encode(origin)
@ -90,7 +92,7 @@ func (sh *SyncHandler) Handle(e Event) {
sh.mutex.Unlock()
for state := range chanForSync {
if compareMap(origin, state) {
if compareMap(sh.states[device.UUID], state) {
sh.mutex.Lock()
close(sh.chanForSync[device.IfaceName])
delete(sh.chanForSync, device.IfaceName)
@ -98,8 +100,8 @@ func (sh *SyncHandler) Handle(e Event) {
return
}
log.Println("wrong: ", state)
log.Println("resend: ", origin)
err := encoder.Encode(origin)
log.Println("resend: ", sh.states[device.UUID])
err := encoder.Encode(sh.states[device.UUID])
if err != nil {
return
}