Lines Matching refs:task
206 auto task = TaskManager::GetInstance().GetTask(taskId); in TerminateTask() local
207 if (task == nullptr || !task->IsLongTask()) { in TerminateTask()
247 Task* task = nullptr; in Execute() local
248 napi_unwrap(env, args[0], reinterpret_cast<void**>(&task)); in Execute()
249 if (task == nullptr) { in Execute()
254 if (!task->CanExecute(env)) { in Execute()
257 napi_value promise = task->GetTaskInfoPromise(env, args[0], TaskType::COMMON_TASK, in Execute()
262 ExecuteTask(env, task, static_cast<Priority>(priority)); in Execute()
270 …Task* task = Task::GenerateFunctionTask(env, args[0], args + 1, argc - 1, TaskType::FUNCTION_TASK); in Execute() local
271 if (task == nullptr) { in Execute()
275 TaskManager::GetInstance().StoreTask(task->taskId_, task); in Execute()
276 napi_value promise = NapiHelper::CreatePromise(env, &task->currentTaskInfo_->deferred); in Execute()
277 ExecuteTask(env, task); in Execute()
284 auto task = TaskManager::GetInstance().GetTask(taskMessage->taskId); in DelayTask() local
286 if (task == nullptr) { in DelayTask()
288 } else if (task->taskState_ == ExecuteState::CANCELED) { in DelayTask()
290 HandleScope scope(task->env_, status); in DelayTask()
295 … napi_value error = ErrorHelper::NewError(task->env_, 0, "taskpool:: task has been canceled"); in DelayTask()
296 napi_reject_deferred(task->env_, taskMessage->deferred, error); in DelayTask()
299 HandleScope scope(task->env_, status); in DelayTask()
305 task->IncreaseRefCount(); in DelayTask()
306 napi_value napiTask = NapiHelper::GetReferenceValue(task->env_, task->taskRef_); in DelayTask()
307 TaskInfo* taskInfo = task->GetTaskInfo(task->env_, napiTask, taskMessage->priority); in DelayTask()
310 … if (task->taskState_ == ExecuteState::DELAYED || task->taskState_ == ExecuteState::FINISHED) { in DelayTask()
311 task->taskState_ = ExecuteState::WAITING; in DelayTask()
316 napi_get_and_clear_last_exception(task->env_, &execption); in DelayTask()
318 napi_reject_deferred(task->env_, taskMessage->deferred, execption); in DelayTask()
322 if (task != nullptr) { in DelayTask()
323 std::lock_guard<RECURSIVE_MUTEX> lock(task->taskMutex_); in DelayTask()
324 task->delayedTimers_.erase(handle); in DelayTask()
337 Task* task = nullptr; in ExecuteDelayed() local
338 if (!CheckDelayedParams(env, cbinfo, priority, delayTime, task)) { in ExecuteDelayed()
342 if (!task->IsExecuted() || task->taskState_ == ExecuteState::CANCELED || in ExecuteDelayed()
343 task->taskState_ == ExecuteState::FINISHED) { in ExecuteDelayed()
344 task->taskState_ = ExecuteState::DELAYED; in ExecuteDelayed()
346 task->UpdateTaskType(TaskType::COMMON_TASK); in ExecuteDelayed()
354 taskMessage->taskId = task->taskId_; in ExecuteDelayed()
358 std::string strTrace = "ExecuteDelayed: taskId: " + std::to_string(task->taskId_); in ExecuteDelayed()
366 std::lock_guard<RECURSIVE_MUTEX> lock(task->taskMutex_); in ExecuteDelayed()
367 task->delayedTimers_.insert(timer); in ExecuteDelayed()
413 Task* task = nullptr; in ExecuteGroup() local
414 napi_unwrap(env, napiTask, reinterpret_cast<void**>(&task)); in ExecuteGroup()
415 if (task == nullptr) { in ExecuteGroup()
419 napi_reference_ref(env, task->taskRef_, nullptr); in ExecuteGroup()
420 if (task->IsGroupCommonTask()) { in ExecuteGroup()
421 task->GetTaskInfo(env, napiTask, static_cast<Priority>(priority)); in ExecuteGroup()
423 ExecuteTask(env, task, static_cast<Priority>(priority)); in ExecuteGroup()
436 auto task = static_cast<Task*>(req->data); in HandleTaskResult() local
437 if (task == nullptr) { // LCOV_EXCL_BR_LINE in HandleTaskResult()
441 if (!task->IsMainThreadTask()) { in HandleTaskResult()
442 if (task->ShouldDeleteTask(false)) { in HandleTaskResult()
443 delete task; in HandleTaskResult()
446 if (task->IsFunctionTask()) { in HandleTaskResult()
447 napi_remove_env_cleanup_hook(task->env_, Task::CleanupHookFunc, task); in HandleTaskResult()
450 task->DecreaseTaskRefCount(); in HandleTaskResult()
451 HandleTaskResultCallback(task); in HandleTaskResult()
454 void TaskPool::HandleTaskResultCallback(Task* task) in HandleTaskResultCallback() argument
457 NAPI_CALL_RETURN_VOID(task->env_, napi_open_handle_scope(task->env_, &scope)); in HandleTaskResultCallback()
459 napi_status status = napi_deserialize(task->env_, task->result_, &napiTaskResult); in HandleTaskResultCallback()
460 napi_delete_serialization_data(task->env_, task->result_); in HandleTaskResultCallback()
463 std::string strTrace = "Task PerformTask End: taskId : " + std::to_string(task->taskId_); in HandleTaskResultCallback()
464 if (task->taskState_ == ExecuteState::CANCELED) { in HandleTaskResultCallback()
466 napiTaskResult = ErrorHelper::NewError(task->env_, 0, "taskpool:: task has been canceled"); in HandleTaskResultCallback()
470 } else if (task->success_) { in HandleTaskResultCallback()
478 napi_get_undefined(task->env_, &napiTaskResult); in HandleTaskResultCallback()
480 reinterpret_cast<NativeEngine*>(task->env_)->DecreaseSubEnvCounter(); in HandleTaskResultCallback()
481 …bool success = ((status == napi_ok) && (task->taskState_ != ExecuteState::CANCELED)) && (task->suc… in HandleTaskResultCallback()
482 task->taskState_ = ExecuteState::ENDING; in HandleTaskResultCallback()
483 task->isRunning_ = false; in HandleTaskResultCallback()
484 if (task->IsGroupTask()) { in HandleTaskResultCallback()
485 UpdateGroupInfoByResult(task->env_, task, napiTaskResult, success); in HandleTaskResultCallback()
486 } else if (!task->IsPeriodicTask()) { in HandleTaskResultCallback()
488 napi_resolve_deferred(task->env_, task->currentTaskInfo_->deferred, napiTaskResult); in HandleTaskResultCallback()
489 if (task->onExecutionSucceededCallBackInfo_ != nullptr) { in HandleTaskResultCallback()
490 task->ExecuteListenerCallback(task->onExecutionSucceededCallBackInfo_); in HandleTaskResultCallback()
493 napi_reject_deferred(task->env_, task->currentTaskInfo_->deferred, napiTaskResult); in HandleTaskResultCallback()
494 if (task->onExecutionFailedCallBackInfo_ != nullptr) { in HandleTaskResultCallback()
495 task->onExecutionFailedCallBackInfo_->taskError_ = napiTaskResult; in HandleTaskResultCallback()
496 task->ExecuteListenerCallback(task->onExecutionFailedCallBackInfo_); in HandleTaskResultCallback()
500 NAPI_CALL_RETURN_VOID(task->env_, napi_close_handle_scope(task->env_, scope)); in HandleTaskResultCallback()
501 TriggerTask(task); in HandleTaskResultCallback()
505 void TaskPool::TriggerTask(Task* task) in TriggerTask() argument
507 HILOG_DEBUG("taskpool:: task:%{public}s TriggerTask", std::to_string(task->taskId_).c_str()); in TriggerTask()
508 if (task->IsGroupTask()) { in TriggerTask()
511 TaskManager::GetInstance().DecreaseRefCount(task->env_, task->taskId_); in TriggerTask()
512 task->taskState_ = ExecuteState::FINISHED; in TriggerTask()
514 if (task->IsSeqRunnerTask()) { in TriggerTask()
515 if (!TaskGroupManager::GetInstance().TriggerSeqRunner(task->env_, task)) { in TriggerTask()
517 … std::to_string(task->taskId_).c_str(), std::to_string(task->seqRunnerId_).c_str()); in TriggerTask()
519 } else if (task->IsCommonTask()) { in TriggerTask()
520 task->NotifyPendingTask(); in TriggerTask()
522 if (task->IsPeriodicTask()) { in TriggerTask()
525 if (!task->IsFunctionTask()) { in TriggerTask()
526 napi_reference_unref(task->env_, task->taskRef_, nullptr); in TriggerTask()
529 TaskManager::GetInstance().RemoveTask(task->taskId_); in TriggerTask()
530 delete task; in TriggerTask()
533 void TaskPool::UpdateGroupInfoByResult(napi_env env, Task* task, napi_value res, bool success) in UpdateGroupInfoByResult() argument
535 …HILOG_DEBUG("taskpool:: task:%{public}s UpdateGroupInfoByResult", std::to_string(task->taskId_).c_… in UpdateGroupInfoByResult()
536 TaskManager::GetInstance().DecreaseRefCount(task->env_, task->taskId_); in UpdateGroupInfoByResult()
537 task->taskState_ = ExecuteState::FINISHED; in UpdateGroupInfoByResult()
538 napi_reference_unref(env, task->taskRef_, nullptr); in UpdateGroupInfoByResult()
539 if (task->IsGroupCommonTask()) { in UpdateGroupInfoByResult()
540 delete task->currentTaskInfo_; in UpdateGroupInfoByResult()
541 task->currentTaskInfo_ = nullptr; in UpdateGroupInfoByResult()
543 TaskGroup* taskGroup = TaskGroupManager::GetInstance().GetTaskGroup(task->groupId_); in UpdateGroupInfoByResult()
549 uint32_t index = taskGroup->GetTaskIndex(task->taskId_); in UpdateGroupInfoByResult()
565 …HILOG_INFO("taskpool:: taskGroup perform end, taskGroupId %{public}s", std::to_string(task->groupI… in UpdateGroupInfoByResult()
568 auto task = TaskManager::GetInstance().GetTask(taskId); in UpdateGroupInfoByResult() local
569 if (task != nullptr && task->onExecutionSucceededCallBackInfo_ != nullptr) { in UpdateGroupInfoByResult()
570 task->ExecuteListenerCallback(task->onExecutionSucceededCallBackInfo_); in UpdateGroupInfoByResult()
579 …auto task = iter != taskGroup->taskIds_.end() ? TaskManager::GetInstance().GetTask(*iter) : nullpt… in UpdateGroupInfoByResult() local
580 if (task != nullptr && task->onExecutionFailedCallBackInfo_ != nullptr) { in UpdateGroupInfoByResult()
581 task->onExecutionFailedCallBackInfo_->taskError_ = res; in UpdateGroupInfoByResult()
582 task->ExecuteListenerCallback(task->onExecutionFailedCallBackInfo_); in UpdateGroupInfoByResult()
593 void TaskPool::ExecuteTask(napi_env env, Task* task, Priority priority) in ExecuteTask() argument
596 std::string strTrace = "Task Allocation: taskId : " + std::to_string(task->taskId_) in ExecuteTask()
601 task->IncreaseRefCount(); in ExecuteTask()
602 TaskManager::GetInstance().IncreaseRefCount(task->taskId_); in ExecuteTask()
603 if (task->IsFunctionTask() || (task->taskState_ != ExecuteState::WAITING && in ExecuteTask()
604 task->taskState_ != ExecuteState::RUNNING && task->taskState_ != ExecuteState::ENDING)) { in ExecuteTask()
605 task->taskState_ = ExecuteState::WAITING; in ExecuteTask()
606 TaskManager::GetInstance().EnqueueTaskId(task->taskId_, priority); in ExecuteTask()
673 Task* task = reinterpret_cast<Task*>(handle->data); in PeriodicTaskCallback() local
674 if (task == nullptr) { in PeriodicTaskCallback()
677 } else if (!task->IsPeriodicTask()) { in PeriodicTaskCallback()
680 } else if (task->taskState_ == ExecuteState::CANCELED) { in PeriodicTaskCallback()
684 TaskManager::GetInstance().IncreaseRefCount(task->taskId_); in PeriodicTaskCallback()
686 if (!task->isFirstTaskInfo_) { in PeriodicTaskCallback()
688 HandleScope scope(task->env_, status); in PeriodicTaskCallback()
693 napi_value napiTask = NapiHelper::GetReferenceValue(task->env_, task->taskRef_); in PeriodicTaskCallback()
694 TaskInfo* taskInfo = task->GetTaskInfo(task->env_, napiTask, task->periodicTaskPriority_); in PeriodicTaskCallback()
700 task->isFirstTaskInfo_ = false; in PeriodicTaskCallback()
702 task->IncreaseRefCount(); in PeriodicTaskCallback()
703 …HILOG_INFO("taskpool:: PeriodicTaskCallback taskId %{public}s", std::to_string(task->taskId_).c_st… in PeriodicTaskCallback()
704 if (task->taskState_ == ExecuteState::NOT_FOUND || task->taskState_ == ExecuteState::FINISHED) { in PeriodicTaskCallback()
705 task->taskState_ = ExecuteState::WAITING; in PeriodicTaskCallback()
706 TaskManager::GetInstance().EnqueueTaskId(task->taskId_, task->periodicTaskPriority_); in PeriodicTaskCallback()
737 void TaskPool::TriggerTimer(napi_env env, Task* task, int32_t period) in TriggerTimer() argument
739 HILOG_INFO("taskpool::TriggerTimer taskId %{public}s", std::to_string(task->taskId_).c_str()); in TriggerTimer()
741 task->timer_ = new uv_timer_t; in TriggerTimer()
742 uv_timer_init(loop, task->timer_); in TriggerTimer()
743 task->timer_->data = task; in TriggerTimer()
745 uv_timer_start(task->timer_, PeriodicTaskCallback, period, period); in TriggerTimer()
757 Task* &task) in CheckDelayedParams() argument
799 napi_unwrap(env, args[1], reinterpret_cast<void**>(&task)); in CheckDelayedParams()
800 if (task == nullptr) { in CheckDelayedParams()
805 if (!task->CanExecuteDelayed(env)) { in CheckDelayedParams()