代码拉取完成,页面将自动刷新
package etimer
import (
"reflect"
"runtime/debug"
)
type Timer struct {
uid uint64
eid uint32
delay uint64
repeat bool
rotation int64
slot uint64
cb FuncType
args ArgType
state TimerState
register *TimerRegister
}
func newTimer(eid uint32, uid uint64, delay uint64, repeat bool, cb FuncType, args ArgType, register *TimerRegister) *Timer {
timer := &Timer{
eid: eid,
uid: uid,
delay: delay,
repeat: repeat,
cb: cb,
args: args,
state: TimerInvalidState,
register: register,
}
return timer
}
func (t *Timer) Kill() {
t.state = TimerKilledState
ELog.Debugf("[Timer] id %v-%v Kill State", t.uid, t.eid)
}
func (t *Timer) Call() {
defer func() {
if err := recover(); err != nil {
ELog.Errorf("[Timer] Func%v Args:%v Call Err: %v Stack=%v", reflect.TypeOf(t.cb).Name(), t.args, err, string(debug.Stack()))
}
}()
t.cb(t.args...)
}
func (t *Timer) getRemainTime() uint64 {
remainTime := uint64(0)
if t.state != TimerRunningState {
return remainTime
}
curSlot := GTimerMgr.GetCurSlot()
if curSlot < t.slot {
remainTime = uint64(t.rotation)*MaxSlotSize + t.slot - curSlot
} else {
remainTime = uint64(t.rotation)*MaxSlotSize + (MaxSlotSize - curSlot + t.slot)
}
return remainTime
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。