安全定时器新增附带TimerId参数

This commit is contained in:
duanhf2012
2021-08-18 09:47:06 +08:00
parent 41e1c27760
commit acb7da541e
2 changed files with 11 additions and 11 deletions

View File

@@ -230,7 +230,7 @@ func (m *Module) cb(*timer.Timer){
} }
func (m *Module) SafeAfterFunc(timerId *uint64,d time.Duration, AdditionData interface{},cb func(interface{})) { func (m *Module) SafeAfterFunc(timerId *uint64,d time.Duration, AdditionData interface{},cb func(uint64,interface{})) {
if m.mapActiveIdTimer == nil { if m.mapActiveIdTimer == nil {
m.mapActiveIdTimer = map[uint64]timer.ITimer{} m.mapActiveIdTimer = map[uint64]timer.ITimer{}
} }
@@ -246,7 +246,7 @@ func (m *Module) SafeAfterFunc(timerId *uint64,d time.Duration, AdditionData int
m.mapActiveIdTimer[*timerId] = t m.mapActiveIdTimer[*timerId] = t
} }
func (m *Module) SafeCronFunc(cronId *uint64,cronExpr *timer.CronExpr, AdditionData interface{}, cb func(interface{})) { func (m *Module) SafeCronFunc(cronId *uint64,cronExpr *timer.CronExpr, AdditionData interface{}, cb func(uint64,interface{})) {
if m.mapActiveIdTimer == nil { if m.mapActiveIdTimer == nil {
m.mapActiveIdTimer = map[uint64]timer.ITimer{} m.mapActiveIdTimer = map[uint64]timer.ITimer{}
} }
@@ -258,7 +258,7 @@ func (m *Module) SafeCronFunc(cronId *uint64,cronExpr *timer.CronExpr, AdditionD
m.mapActiveIdTimer[*cronId] = c m.mapActiveIdTimer[*cronId] = c
} }
func (m *Module) SafeNewTicker(tickerId *uint64,d time.Duration, AdditionData interface{}, cb func(interface{})) { func (m *Module) SafeNewTicker(tickerId *uint64,d time.Duration, AdditionData interface{}, cb func(uint64,interface{})) {
if m.mapActiveIdTimer == nil { if m.mapActiveIdTimer == nil {
m.mapActiveIdTimer = map[uint64]timer.ITimer{} m.mapActiveIdTimer = map[uint64]timer.ITimer{}
} }

View File

@@ -33,7 +33,7 @@ type Timer struct {
C chan ITimer //定时器管道 C chan ITimer //定时器管道
interval time.Duration // 时间间隔(用于循环定时器) interval time.Duration // 时间间隔(用于循环定时器)
fireTime time.Time // 触发时间 fireTime time.Time // 触发时间
cb func(interface{}) cb func(uint64,interface{})
cbEx func(t *Timer) cbEx func(t *Timer)
cbCronEx func(t *Cron) cbCronEx func(t *Cron)
cbTickerEx func(t *Ticker) cbTickerEx func(t *Ticker)
@@ -67,7 +67,7 @@ var tickerPool =sync.NewPoolEx(make(chan sync.IPoolData,1000),func() sync.IPoolD
return &Ticker{} return &Ticker{}
}) })
func newTimer(d time.Duration,c chan ITimer,cb func(interface{}),additionData interface{}) *Timer{ func newTimer(d time.Duration,c chan ITimer,cb func(uint64,interface{}),additionData interface{}) *Timer{
timer := timerPool.Get().(*Timer) timer := timerPool.Get().(*Timer)
timer.AdditionData = additionData timer.AdditionData = additionData
timer.C = c timer.C = c
@@ -145,7 +145,7 @@ func (t *Timer) Do(){
} }
if t.cb != nil { if t.cb != nil {
t.cb(t.AdditionData) t.cb(t.Id,t.AdditionData)
}else if t.cbEx != nil { }else if t.cbEx != nil {
t.cbEx(t) t.cbEx(t)
} }
@@ -236,7 +236,7 @@ func (c *Cron) Do() {
} }
if c.cb!=nil { if c.cb!=nil {
c.cb(c.AdditionData) c.cb(c.Id,c.AdditionData)
}else if c.cbEx !=nil { }else if c.cbEx !=nil {
c.cbCronEx(c) c.cbCronEx(c)
} }
@@ -286,7 +286,7 @@ func (c *Ticker) Do() {
} }
if c.cb!=nil{ if c.cb!=nil{
c.cb(c.AdditionData) c.cb(c.Id,c.AdditionData)
} else if c.cbTickerEx != nil{ } else if c.cbTickerEx != nil{
c.cbTickerEx(c) c.cbTickerEx(c)
} }
@@ -324,7 +324,7 @@ func NewDispatcher(l int) *Dispatcher {
return dispatcher return dispatcher
} }
func (dispatcher *Dispatcher) AfterFunc(d time.Duration, cb func(data interface{}),cbEx func(*Timer),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Timer { func (dispatcher *Dispatcher) AfterFunc(d time.Duration, cb func(uint64,interface{}),cbEx func(*Timer),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Timer {
timer := newTimer(d,dispatcher.ChanTimer,nil,nil) timer := newTimer(d,dispatcher.ChanTimer,nil,nil)
timer.cb = cb timer.cb = cb
timer.cbEx = cbEx timer.cbEx = cbEx
@@ -338,7 +338,7 @@ func (dispatcher *Dispatcher) AfterFunc(d time.Duration, cb func(data interface{
return timer return timer
} }
func (dispatcher *Dispatcher) CronFunc(cronExpr *CronExpr,cb func(data interface{}), cbEx func(*Cron),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Cron { func (dispatcher *Dispatcher) CronFunc(cronExpr *CronExpr,cb func(uint64,interface{}), cbEx func(*Cron),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Cron {
now := Now() now := Now()
nextTime := cronExpr.Next(now) nextTime := cronExpr.Next(now)
if nextTime.IsZero() { if nextTime.IsZero() {
@@ -358,7 +358,7 @@ func (dispatcher *Dispatcher) CronFunc(cronExpr *CronExpr,cb func(data interface
return cron return cron
} }
func (dispatcher *Dispatcher) TickerFunc(d time.Duration,cb func(data interface{}), cbEx func(*Ticker),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Ticker { func (dispatcher *Dispatcher) TickerFunc(d time.Duration,cb func(uint64,interface{}), cbEx func(*Ticker),onTimerClose OnCloseTimer,onAddTimer OnAddTimer) *Ticker {
ticker := newTicker() ticker := newTicker()
ticker.C = dispatcher.ChanTimer ticker.C = dispatcher.ChanTimer
ticker.fireTime = Now().Add(d) ticker.fireTime = Now().Add(d)