diff --git a/service/module.go b/service/module.go index 4c7bebe..96e04ae 100644 --- a/service/module.go +++ b/service/module.go @@ -178,7 +178,7 @@ func (m *Module) AfterFunc(d time.Duration, cb func()) *timer.Timer { return m.dispatcher.AfterFunc(d,cb,m.OnCloseTimer,m.OnAddTimer) } -func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func()) *timer.Cron { +func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func(*timer.Cron)) *timer.Cron { if m.mapActiveTimer == nil { m.mapActiveTimer =map[*timewheel.Timer]interface{}{} } @@ -186,7 +186,7 @@ func (m *Module) CronFunc(cronExpr *timer.CronExpr, cb func()) *timer.Cron { return m.dispatcher.CronFunc(cronExpr,cb,m.OnCloseTimer,m.OnAddTimer) } -func (m *Module) NewTicker(d time.Duration, cb func()) *timer.Ticker { +func (m *Module) NewTicker(d time.Duration, cb func(*timer.Ticker)) *timer.Ticker { if m.mapActiveTimer == nil { m.mapActiveTimer =map[*timewheel.Timer]interface{}{} } diff --git a/util/timer/timer.go b/util/timer/timer.go index 20f3f1d..ad5a8df 100644 --- a/util/timer/timer.go +++ b/util/timer/timer.go @@ -164,7 +164,7 @@ func (disp *Dispatcher) AfterFunc(d time.Duration, cb func(),onCloseTimer func(t return t } -func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Cron { +func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(*Cron),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Cron { now := time.Now() nextTime := cronExpr.Next(now) if nextTime.IsZero() { @@ -179,7 +179,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func now := time.Now() nextTime := cronExpr.Next(now) if nextTime.IsZero() { - cb() + cb(cron) return } @@ -191,7 +191,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func cron.t = timewheel.NewTimerEx(interval,disp.ChanTimer,cron) onAddTimer(cron.t) - cb() + cb(cron) } cron.cb = cbFunc cron.t = timewheel.NewTimerEx(nextTime.Sub(now),disp.ChanTimer,cron) @@ -199,7 +199,7 @@ func (disp *Dispatcher) CronFunc(cronExpr *CronExpr, cb func(),onCloseTimer func return cron } -func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Ticker { +func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(*Ticker),onCloseTimer func(timer *timewheel.Timer),onAddTimer func(timer *timewheel.Timer)) *Ticker { funcName := runtime.FuncForPC(reflect.ValueOf(cb).Pointer()).Name() ticker := NewTicker(nil,nil,funcName,onCloseTimer) // callback @@ -207,7 +207,7 @@ func (disp *Dispatcher) TickerFunc(d time.Duration, cb func(),onCloseTimer func( cbFunc = func() { ticker.t = timewheel.NewTimerEx(d,disp.ChanTimer,ticker) onAddTimer(ticker.t) - cb() + cb(ticker) } ticker.cb = cbFunc