// Package task ... // // Description : task ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2022-06-23 15:13 package task import ( "context" "fmt" "sync" ) var ( // Dispatch 调度实例 Dispatch *dispatch ) func init() { Dispatch = &dispatch{ lock: &sync.RWMutex{}, taskTable: make(map[string]ITask), } } // dispatch 任务调度 // // Author : go_developer@163.com<白茶清欢> // // Date : 15:14 2022/6/23 type dispatch struct { // 锁 lock *sync.RWMutex // 任务表 taskTable map[string]ITask } // Register 注册任务 // // Author : go_developer@163.com<白茶清欢> // // Date : 15:16 2022/6/23 func (d *dispatch) Register(taskInstanceList ...ITask) error { d.lock.Lock() defer d.lock.Unlock() for _, taskInstance := range taskInstanceList { if nil == taskInstance { continue } if _, exist := d.taskTable[taskInstance.Name()]; exist { return fmt.Errorf("%s 任务重复注册! ", taskInstance.Name()) } d.taskTable[taskInstance.Name()] = taskInstance } return nil } // Remove 移除任务 // // Author : go_developer@163.com<白茶清欢> // // Date : 15:16 2022/6/23 func (d *dispatch) Remove(taskNameList ...string) error { d.lock.Lock() defer d.lock.Unlock() for _, taskName := range taskNameList { delete(d.taskTable, taskName) } return nil } // Run 执行任务 // // Author : go_developer@163.com<白茶清欢> // // Date : 15:18 2022/6/23 func (d *dispatch) Run(ctx context.Context, cfg *Config, taskParam map[string]interface{}) (map[string]interface{}, error) { return nil, nil }