#include "cpps/cpps.h"namespace cpps {void printcallstack(std::string& errmsg, C* c);cpps_async_task::cpps_async_task(){runstate = cpps_async_task_pending;rt = 0;async_object = NULL;}cpps_async_task::~cpps_async_task(){}void cpps_async_task::run(cpps_async_task* p,C*c){try{p->ret = p->async_object->call(c);p->runstate = cpps_async_task_done;}catch (cpps_trycatch_error& e){std::string errmsg;printcallstack(errmsg, c);p->throwerr = e;p->throwerr._callstackstr += errmsg;p->runstate = cpps_async_task_thorw;}catch (cpps_error& e){std::string errmsg;printcallstack(errmsg, c);p->throwerr.attach(e);p->throwerr._callstackstr = errmsg;p->runstate = cpps_async_task_thorw;}}cpps_value cpps_async_task::getresult(){return ret;}cpps_async_object* cpps_async_task::getobject(){return async_object;}int8 cpps_async_task::state(){return runstate;}bool cpps_async_task::cancelled(){return runstate == cpps_async_task_cancelled;}bool cpps_async_task::done(){return runstate == cpps_async_task_done;}bool cpps_async_task::timeout(){return runstate == cpps_async_task_timeouted;}bool cpps_async_task::pending(){return runstate == cpps_async_task_pending;}bool cpps_async_task::running(){return runstate == cpps_async_task_running;}void cpps_async_task::cancel(){runstate = cpps_async_task_cancelled;}void cpps_async_task::start(C * cstate){c = cstate;runstate = cpps_async_task_running;}void cpps_async_task::add_done_callback(cpps_value func, cpps_value context){callback_func = func;callback_context = context;}void cpps_async_task::remove_done_callback(){callback_func = nil;callback_context = nil;}void cpps_async_task::call_done_callback(C* c){if(callback_func.tt == CPPS_TFUNCTION || callback_func.tt == CPPS_TLAMBDAFUNCTION)dofunction(c, callback_func, this,callback_context);}void cpps_async_task::set_name(std::string n){name = n;}std::string cpps_async_task::get_name(){return name;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型