2018-11-26 01:30:02 +00:00
|
|
|
package imitate
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// ExecuteInterval 时间间隔的类型
|
|
|
|
type ExecuteInterval struct {
|
|
|
|
TimeInterval int64 `yaml:"sec"` // 时间间隔
|
|
|
|
|
|
|
|
TriggerTime int64 // 执行时间间隔触发时间
|
|
|
|
StartStatus bool // 判断是否按照时间间隔执行
|
|
|
|
}
|
|
|
|
|
|
|
|
// SetStartStatus 设置执行计划是否生效
|
|
|
|
func (ei *ExecuteInterval) SetStartStatus(status bool) {
|
|
|
|
ei.StartStatus = status
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetTriggerTime 获取计划的触发时间
|
|
|
|
func (ei *ExecuteInterval) GetTriggerTime() int64 {
|
|
|
|
if ei.StartStatus {
|
|
|
|
return ei.TriggerTime
|
|
|
|
}
|
|
|
|
return -1
|
|
|
|
}
|
|
|
|
|
|
|
|
// TimeTo 是否到了该触发的时间
|
|
|
|
func (ei *ExecuteInterval) TimeTo() int64 {
|
|
|
|
return time.Now().Unix() - ei.TriggerTime
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetStartStatus 获取计划的触发时间是否在生效
|
|
|
|
func (ei *ExecuteInterval) GetStartStatus() bool {
|
|
|
|
return ei.StartStatus
|
|
|
|
}
|
|
|
|
|
|
|
|
// CalculateTrigger 计算触发特定时间任务的时间点
|
2018-11-27 09:46:29 +00:00
|
|
|
func (ei *ExecuteInterval) CalculateTrigger() {
|
2018-11-26 01:30:02 +00:00
|
|
|
now := time.Now()
|
|
|
|
ei.TriggerTime = now.Unix() + ei.TimeInterval
|
|
|
|
}
|
|
|
|
|
|
|
|
// FromValue 生成计划表
|
|
|
|
func (ei *ExecuteInterval) FromValue(vsleep int64) {
|
|
|
|
ei.TimeInterval = vsleep
|
|
|
|
}
|