You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
1.6 KiB

package timewheel
import (
"time"
)
type (
ISys interface {
Start()
Stop()
Add(delay time.Duration, handler func(*Task, ...interface{}), args ...interface{}) *Task
AddCron(delay time.Duration, handler func(*Task, ...interface{}), args ...interface{}) *Task
Remove(task *Task) error
NewTimer(delay time.Duration) *Timer
NewTicker(delay time.Duration) *Ticker
AfterFunc(delay time.Duration, callback func()) *Timer
After(delay time.Duration) <-chan time.Time
Sleep(delay time.Duration)
}
)
var (
defsys ISys
)
func OnInit(config map[string]interface{}, option ...Option) (err error) {
if defsys, err = newsys(newOptions(config, option...)); err == nil {
defsys.Start()
}
return
}
func NewSys(option ...Option) (sys ISys, err error) {
if sys, err = newsys(newOptionsByOption(option...)); err == nil {
sys.Start()
}
return
}
func Add(delay time.Duration, handler func(*Task, ...interface{}), args ...interface{}) *Task {
return defsys.Add(delay, handler, args...)
}
func AddCron(delay time.Duration, handler func(*Task, ...interface{}), args ...interface{}) *Task {
return defsys.AddCron(delay, handler, args...)
}
func Remove(task *Task) error {
return defsys.Remove(task)
}
func NewTimer(delay time.Duration) *Timer {
return defsys.NewTimer(delay)
}
func NewTicker(delay time.Duration) *Ticker {
return defsys.NewTicker(delay)
}
func AfterFunc(delay time.Duration, callback func()) *Timer {
return defsys.AfterFunc(delay, callback)
}
func After(delay time.Duration) <-chan time.Time {
return defsys.After(delay)
}
func Sleep(delay time.Duration) {
defsys.Sleep(delay)
}