Ai
1 Star 0 Fork 0

蒙蒙的男孩/polaris-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
task.go 2.88 KB
一键复制 编辑 原始数据 按行查看 历史
蒙蒙的男孩 提交于 2023-10-22 16:32 +08:00 . 1.5.4
/**
* Tencent is pleased to support the open source community by making polaris-go available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package model
import (
"time"
)
// TaskValue 任务值类型
type TaskValue interface {
// 比较两个元素
CompareTo(interface{}) int
// 删除前进行检查,返回true才删除,该检查是同步操作
EnsureDeleted(value interface{}) bool
}
// TaskValues 定时任务处理的数据
type TaskValues interface {
// 获取启动状态
Started() bool
// 增加数据
// 对于非立即启动的任务,首次增加value时,协程才开始启动
AddValue(key interface{}, value TaskValue)
// 删除数据
// 当缓存数据列表为空时,对于非长稳运行的任务,则会结束协程
DeleteValue(key interface{}, value TaskValue)
}
// 任务处理结果
type TaskResult int
const (
// CONTINUE 本次任务处理完毕,更新时间戳并等待下一轮
CONTINUE TaskResult = iota
// SKIP 本次任务无需执行,不更新时间戳
SKIP
// TERMINATE 后续任务无需再执行
TERMINATE
)
type TaskEvent int
const (
// EventStart 任务启动事件
EventStart TaskEvent = iota
// EventStop 任务停止事件
EventStop
)
// PeriodicCallBack 回调接口
type PeriodicCallBack interface {
// 任务回调函数
// 参数说明:
// lastProcessTime:上一次任务处理时间
// taskKey:任务数据主键
// taskValue: 任务数据值
// 返回值:
// TaskResult:后续是否继续执行,本次是否忽略
Process(taskKey interface{}, taskValue interface{}, lastProcessTime time.Time) TaskResult
// OnTaskEvent 任务事件回调
OnTaskEvent(event TaskEvent)
}
// PeriodicTask 周期执行的任务信息(含高优先级任务)
type PeriodicTask struct {
// 任务标识
Name string
// 定时任务回调
CallBack PeriodicCallBack
// 是否需要处理高优先级任务
TakePriority bool
// 是否长稳运行
LongRun bool
// 调度周期
Period time.Duration
// 是否延迟启动,为true的话,则会延迟一个周期再执行第一次任务
DelayStart bool
}
// PriorityCallBack 调度高优先级任务
type PriorityCallBack interface {
// 处理任务内容
Process()
}
// PriorityTask 任务结构
type PriorityTask struct {
// 任务标识
Name string
// 任务执行回调函数
CallBack PriorityCallBack
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/meng_mengs_boys/polaris-go.git
git@gitee.com:meng_mengs_boys/polaris-go.git
meng_mengs_boys
polaris-go
polaris-go
v1.5.4

搜索帮助