package com.develop.food.base.timer

/**
 * 全局定时器任务管理
 */
class TimeTaskManager private constructor() {
    interface Task : Runnable {
        /**
         * 任务描述，TAG 要保证唯一
         *
         * @return
         */
        val tag: String?

        /**
         * 初始化任务的延迟，0/1的话，下次立刻执行
         *
         * @return
         */
        val initDelaySecs: Int

        /**
         * 间隔执行的秒数
         *
         * @return
         */
        val periodSecs: Int
    }

    private object IN {
        val M = TimeTaskManager()
    }

    private val mTimer: LongTermTaskTimer?
    fun start() {
        mTimer!!.start()
    }

    fun stop() {
        mTimer!!.stop()
    }

    /**
     * 注册秒级执行任务
     *
     * @param task
     */
    fun addSECLevelTask(task: Task?) {
        if (mTimer != null && task != null) {
            mTimer.addSECLevelTask(task.tag, task.initDelaySecs, task.periodSecs, task)
        }
    }

    /**
     * 注册秒级执行任务
     *
     * @param task
     */
    fun removeSECLevelTask(task: Task?) {
        if (mTimer != null && task != null) {
            mTimer.removeSECLevelTask(task.tag)
        }
    }

    companion object {
        fun get(): TimeTaskManager {
            return IN.M
        }
    }

    init {
        mTimer = LongTermTaskTimer()
    }
}