/** * space_server 任务管理。 * * © 2020 成都河狸智能科技有限责任公司。保留所有权利。 * * 作者: zhq1229 */ #ifndef __TASK_H__ #define __TASK_H__ #include #include "task/map.h" #include "task/path.h" using TaskId = unsigned int; using TaskHandle = bool (*)(Json::Value &sub_task); namespace task { enum TaskState { PEND = 0, EXECUTE, DONE, CANCLE, REJECT, }; struct TaskInfo { TaskInfo(): task_id(0), name(""), state(PEND), progress(0), info(""), sub_id(0), sub_name("") {} TaskId task_id; std::string name; TaskState state; unsigned int progress; std::string info; TaskId sub_id; std::string sub_name; Json::Value sub_tasks; }; /** * 设置任务 * * @param data [in] 任务信息 * @return 通用错误码 */ int setTask(Json::Value &data); /** * 退出任务 * * @param info [in] 退出信息 * @return 通用错误码 */ int quitTask(std::string info); /** * 检查任务及机器人状态,通常在任务中周期调用 * 检查任务是否被打断、取消等;检查机器人状态是否正常 * * @return ture-正常 false-异常 */ bool checkState(); /** * 结束任务前,设置任务信息 * * @param state [in] 任务结束状态 * @param info [in] 任务结束信息 */ void setTaskOverInfo(TaskState state, std::string info); /** * 设置任务结束回调 * * @param callback [in] 回调函数 * @return 通用错误码 */ int setTaskOverCallback(void (*callback)(TaskInfo task_info)); /** * 设置子任务处理函数 * * @param sub_type [in] 子任务类型 * @param task_handle [in] 处理函数 * @return 通用错误码 */ int setTaskHandle(std::string sub_type, TaskHandle task_handle); /** * 获取任务信息 * * @return 任务信息 */ TaskInfo taskInfo(); /** * 获取任务状态 * * @return 任务状态 */ TaskState taskState(); /** * 初始化 * * @return 通用错误码 */ int init(Json::Value &conf); /** * 关闭 * * @return 通用错误码 */ int shutdown(); } // namespace task #endif // __TASK_H__