✏️ 修复 manager 定时器错误

This commit is contained in:
fumiama 2021-12-26 16:05:05 +08:00
parent 58e075e6ff
commit 16624a9596
2 changed files with 17 additions and 6 deletions

View File

@ -78,15 +78,19 @@ func (c *Clock) RegisterTimer(ts *Timer, save bool) bool {
c.entries[key] = eid c.entries[key] = eid
c.entmu.Unlock() c.entmu.Unlock()
if save { if save {
err = c.AddTimer(ts) err = c.AddTimerIntoDB(ts)
}
if err == nil {
err = c.AddTimerIntoMap(ts)
} }
return err == nil return err == nil
} }
ts.Alert = err.Error() ts.Alert = err.Error()
} else { } else {
if save { if save {
_ = c.AddTimer(ts) _ = c.AddTimerIntoDB(ts)
} }
_ = c.AddTimerIntoMap(ts)
for ts.En() { for ts.En() {
nextdate := ts.nextWakeTime() nextdate := ts.nextWakeTime()
sleepsec := time.Until(nextdate) sleepsec := time.Until(nextdate)
@ -161,11 +165,18 @@ func (c *Clock) GetTimer(key uint32) (t *Timer, ok bool) {
return return
} }
// AddTimer 添加定时器 // AddTimerIntoDB 添加定时器
func (c *Clock) AddTimer(t *Timer) (err error) { func (c *Clock) AddTimerIntoDB(t *Timer) (err error) {
c.timersmu.Lock()
err = c.db.Insert("timer", t)
c.timersmu.Unlock()
return
}
// AddTimerIntoMap 添加定时器到缓存
func (c *Clock) AddTimerIntoMap(t *Timer) (err error) {
c.timersmu.Lock() c.timersmu.Lock()
(*c.timers)[t.ID] = t (*c.timers)[t.ID] = t
err = c.db.Insert("timer", t)
c.timersmu.Unlock() c.timersmu.Unlock()
return return
} }

View File

@ -27,7 +27,7 @@ func TestNextWakeTime(t *testing.T) {
func TestClock(t *testing.T) { func TestClock(t *testing.T) {
db := &sql.Sqlite{DBPath: "test.db"} db := &sql.Sqlite{DBPath: "test.db"}
c := NewClock(db) c := NewClock(db)
c.AddTimer(GetFilledTimer([]string{"", "12", "-1", "12", "0", "", "test"}, 0, 0, false)) c.AddTimerIntoDB(GetFilledTimer([]string{"", "12", "-1", "12", "0", "", "test"}, 0, 0, false))
t.Log(c.ListTimers(0)) t.Log(c.ListTimers(0))
t.Fail() t.Fail()
} }