From 16624a9596f1e08816ecc8fd88d77ee52f04c215 Mon Sep 17 00:00:00 2001 From: fumiama Date: Sun, 26 Dec 2021 16:05:05 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20=20=E4=BF=AE=E5=A4=8D=20ma?= =?UTF-8?q?nager=20=E5=AE=9A=E6=97=B6=E5=99=A8=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_manager/timer/timer.go | 21 ++++++++++++++++----- plugin_manager/timer/timer_test.go | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/plugin_manager/timer/timer.go b/plugin_manager/timer/timer.go index 06bd5603..137e8e84 100644 --- a/plugin_manager/timer/timer.go +++ b/plugin_manager/timer/timer.go @@ -78,15 +78,19 @@ func (c *Clock) RegisterTimer(ts *Timer, save bool) bool { c.entries[key] = eid c.entmu.Unlock() if save { - err = c.AddTimer(ts) + err = c.AddTimerIntoDB(ts) + } + if err == nil { + err = c.AddTimerIntoMap(ts) } return err == nil } ts.Alert = err.Error() } else { if save { - _ = c.AddTimer(ts) + _ = c.AddTimerIntoDB(ts) } + _ = c.AddTimerIntoMap(ts) for ts.En() { nextdate := ts.nextWakeTime() sleepsec := time.Until(nextdate) @@ -161,11 +165,18 @@ func (c *Clock) GetTimer(key uint32) (t *Timer, ok bool) { return } -// AddTimer 添加定时器 -func (c *Clock) AddTimer(t *Timer) (err error) { +// AddTimerIntoDB 添加定时器 +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.timers)[t.ID] = t - err = c.db.Insert("timer", t) c.timersmu.Unlock() return } diff --git a/plugin_manager/timer/timer_test.go b/plugin_manager/timer/timer_test.go index c42492dd..0f709354 100644 --- a/plugin_manager/timer/timer_test.go +++ b/plugin_manager/timer/timer_test.go @@ -27,7 +27,7 @@ func TestNextWakeTime(t *testing.T) { func TestClock(t *testing.T) { db := &sql.Sqlite{DBPath: "test.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.Fail() }