/*
 * @Description: 
 * @Version: 1.0
 * @Autor: lishengyin
 * @Date: 2022-04-07 17:38:23
 * @LastEditors: lishengyin
 * @LastEditTime: 2022-04-08 17:34:27
 */
#include "ins_Task.hpp"


namespace ins
{
    using TaskPtr = std::shared_ptr<function<void()>>;
    
    /**
     * @description: 创建新的实例
     * @param {TaskPtr} task 任务ptr
     * @param {InsTaskType} type 任务类型  
     * @param {InsTaskToken} token 任务token
     * @param {InsTaskFlag} flag 任务flag 异步执行或者同步
     * 默认为 get、 内部、 异步执行
     * @return {*}
     */   
    std::shared_ptr<InsTask> InsTask::CreateNew(TaskPtr task, InsTaskType type, InsTaskToken token, InsTaskFlag flag){
        return shared_ptr<InsTask>(new InsTask(task, type, token, flag));
    }

    /**
     * @description: 创建TaskPtr
     * @param {*}
     * @return {*}
     */    
    TaskPtr InsTask::MakeTaskPtr(std::function<void()> t){
        return std::make_shared<std::function<void()>>(t);
    }
    
    /**
     * @description: 获取函数指针
     * @param {*}
     * @return {*}
     */    
    TaskPtr InsTask::getTask(){
        return this->task_;
    }

    /**
     * @description: 获取flag
     * @param {*}
     * @return {*}
     */    
    InsTaskFlag InsTask::getFlag(){
        return this->flag_;
    }
} // namespace ins
