mirror of
https://github.com/Xevion/go-ha.git
synced 2025-12-07 05:15:16 -06:00
switch back to pointers, but this time add etl := etl when iterating over list to set correct pointer
This commit is contained in:
18
app.go
18
app.go
@@ -26,9 +26,9 @@ type App struct {
|
|||||||
|
|
||||||
schedules pq.PriorityQueue
|
schedules pq.PriorityQueue
|
||||||
intervals pq.PriorityQueue
|
intervals pq.PriorityQueue
|
||||||
entityListeners map[string][]EntityListener
|
entityListeners map[string][]*EntityListener
|
||||||
entityListenersId int64
|
entityListenersId int64
|
||||||
eventListeners map[string][]EventListener
|
eventListeners map[string][]*EventListener
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -97,8 +97,8 @@ func NewApp(request NewAppRequest) *App {
|
|||||||
state: state,
|
state: state,
|
||||||
schedules: pq.New(),
|
schedules: pq.New(),
|
||||||
intervals: pq.New(),
|
intervals: pq.New(),
|
||||||
entityListeners: map[string][]EntityListener{},
|
entityListeners: map[string][]*EntityListener{},
|
||||||
eventListeners: map[string][]EventListener{},
|
eventListeners: map[string][]*EventListener{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,15 +147,16 @@ func (a *App) RegisterIntervals(intervals ...Interval) {
|
|||||||
|
|
||||||
func (a *App) RegisterEntityListeners(etls ...EntityListener) {
|
func (a *App) RegisterEntityListeners(etls ...EntityListener) {
|
||||||
for _, etl := range etls {
|
for _, etl := range etls {
|
||||||
|
etl := etl
|
||||||
if etl.delay != 0 && etl.toState == "" {
|
if etl.delay != 0 && etl.toState == "" {
|
||||||
log.Fatalln("EntityListener error: you have to use ToState() when using Duration()")
|
log.Fatalln("EntityListener error: you have to use ToState() when using Duration()")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, entity := range etl.entityIds {
|
for _, entity := range etl.entityIds {
|
||||||
if elList, ok := a.entityListeners[entity]; ok {
|
if elList, ok := a.entityListeners[entity]; ok {
|
||||||
a.entityListeners[entity] = append(elList, etl)
|
a.entityListeners[entity] = append(elList, &etl)
|
||||||
} else {
|
} else {
|
||||||
a.entityListeners[entity] = []EntityListener{etl}
|
a.entityListeners[entity] = []*EntityListener{&etl}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,12 +164,13 @@ func (a *App) RegisterEntityListeners(etls ...EntityListener) {
|
|||||||
|
|
||||||
func (a *App) RegisterEventListeners(evls ...EventListener) {
|
func (a *App) RegisterEventListeners(evls ...EventListener) {
|
||||||
for _, evl := range evls {
|
for _, evl := range evls {
|
||||||
|
evl := evl
|
||||||
for _, eventType := range evl.eventTypes {
|
for _, eventType := range evl.eventTypes {
|
||||||
if elList, ok := a.eventListeners[eventType]; ok {
|
if elList, ok := a.eventListeners[eventType]; ok {
|
||||||
a.eventListeners[eventType] = append(elList, evl)
|
a.eventListeners[eventType] = append(elList, &evl)
|
||||||
} else {
|
} else {
|
||||||
ws.SubscribeToEventType(eventType, a.conn, a.ctx)
|
ws.SubscribeToEventType(eventType, a.conn, a.ctx)
|
||||||
a.eventListeners[eventType] = []EventListener{evl}
|
a.eventListeners[eventType] = []*EventListener{&evl}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package gomeassistant
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang-module/carbon"
|
"github.com/golang-module/carbon"
|
||||||
@@ -130,7 +131,7 @@ func runSchedules(a *App) {
|
|||||||
sched = popSchedule(a)
|
sched = popSchedule(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("Next schedule:", sched.nextRunTime)
|
log.Println("Next schedule:", sched.nextRunTime)
|
||||||
time.Sleep(time.Until(sched.nextRunTime))
|
time.Sleep(time.Until(sched.nextRunTime))
|
||||||
sched.maybeRunCallback(a)
|
sched.maybeRunCallback(a)
|
||||||
requeueSchedule(a, sched)
|
requeueSchedule(a, sched)
|
||||||
|
|||||||
Reference in New Issue
Block a user