imitater/execute_interval.go

49 lines
1.1 KiB
Go
Raw Normal View History

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 计算触发特定时间任务的时间点
func (ei *ExecuteInterval) CalculateTrigger() int64 {
now := time.Now()
ei.TriggerTime = now.Unix() + ei.TimeInterval
return ei.TriggerTime
}
// FromValue 生成计划表
func (ei *ExecuteInterval) FromValue(vsleep int64) {
ei.TimeInterval = vsleep
}