1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lanfengye2002-task_url

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Schedule.go 1.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
lanfengye Отправлено 02.09.2019 09:14 cc23ee0
package main
//带参数的定时任务包
import (
"fmt"
"github.com/jakecoffman/cron"
"strconv"
)
type SchduleActiveCallback func(*Task)
type ScheduleJob struct {
info *Task
callback SchduleActiveCallback
}
func NewScheduleJob(_id *Task, _job SchduleActiveCallback) *ScheduleJob {
instance := &ScheduleJob{
info: _id,
callback: _job,
}
return instance
}
func (this *ScheduleJob) Run() {
if nil != this.callback {
this.callback(this.info)
} else {
fmt.Println("Invalid callback function")
return
}
}
type ScheduleManager struct {
cronJob *cron.Cron
}
func NewScheduleManager() *ScheduleManager {
instance := &ScheduleManager{}
instance.cronJob = cron.New()
return instance
}
//启动
func (this *ScheduleManager) Start() {
this.cronJob.Start()
}
func (this *ScheduleManager) Stop() {
this.cronJob.Stop()
}
/**
添加任务
*/
func (this *ScheduleManager) AddJob(info *Task, scheduleActive func(*Task)) {
job := NewScheduleJob(info, scheduleActive)
//job := NewScheduleJob(id, scheduleActive)
this.cronJob.AddJob(info.Cron, job, strconv.Itoa(info.Id))
}
//移除任务
func (this *ScheduleManager) RemoveJob(name string) {
this.cronJob.RemoveJob(name)
}
//获取所有的任务
func (this *ScheduleManager) Entries() []*cron.Entry {
return this.cronJob.Entries()
}
func (this *ScheduleManager) Pos(name string) int {
for p, e := range this.cronJob.Entries() {
if e.Name == name {
return p
}
}
return -1
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lanfengye2002-task_url.git
git@api.gitlife.ru:oschina-mirror/lanfengye2002-task_url.git
oschina-mirror
lanfengye2002-task_url
lanfengye2002-task_url
master