Lines Matching refs:seqRunner

1565 void TaskGroupManager::StoreSequenceRunner(uint64_t seqRunnerId, SequenceRunner* seqRunner)
1568 seqRunners_.emplace(seqRunnerId, seqRunner);
1593 HILOG_ERROR("seqRunner:: seqRunner not found.");
1604 SequenceRunner* seqRunner = GetSeqRunner(seqRunnerId);
1605 if (seqRunner == nullptr) {
1606 HILOG_ERROR("seqRunner:: trigger seqRunner not exist.");
1609 if (!SequenceRunnerManager::GetInstance().TriggerGlobalSeqRunner(env, seqRunner)) {
1610 HILOG_ERROR("seqRunner:: trigger globalSeqRunner not exist.");
1613 if (seqRunner->currentTaskId_ != lastTask->taskId_) {
1614 HILOG_ERROR("seqRunner:: only front task can trigger seqRunner.");
1618 std::unique_lock<std::shared_mutex> lock(seqRunner->seqRunnerMutex_);
1619 if (seqRunner->seqRunnerTasks_.empty()) {
1620 HILOG_DEBUG("seqRunner:: seqRunner %{public}s empty.", std::to_string(seqRunnerId).c_str());
1621 seqRunner->currentTaskId_ = 0;
1624 Task* task = seqRunner->seqRunnerTasks_.front();
1625 seqRunner->seqRunnerTasks_.pop();
1628 if (seqRunner->seqRunnerTasks_.empty()) {
1629 HILOG_DEBUG("seqRunner:: seqRunner %{public}s empty in cancel loop.",
1631 seqRunner->currentTaskId_ = 0;
1634 task = seqRunner->seqRunnerTasks_.front();
1635 seqRunner->seqRunnerTasks_.pop();
1637 seqRunner->currentTaskId_ = task->taskId_;
1640 HILOG_DEBUG("seqRunner:: Trigger task %{public}s in seqRunner %{public}s.",
1642 TaskManager::GetInstance().EnqueueTaskId(task->taskId_, seqRunner->priority_);
1709 SequenceRunner *seqRunner = nullptr;
1712 seqRunner = new SequenceRunner();
1715 seqRunner->priority_ = static_cast<Priority>(priority);
1717 seqRunner->isGlobalRunner_ = true;
1718 seqRunner->seqName_ = name;
1719 globalSeqRunner_.emplace(name, seqRunner);
1721 seqRunner = iter->second;
1722 if (priority != seqRunner->priority_) {
1723 ErrorHelper::ThrowError(env, ErrorHelper::TYPE_ERROR, "seqRunner:: priority can not changed.");
1727 seqRunner->count_++;
1728 auto tmpIter = seqRunner->globalSeqRunnerRef_.find(env);
1729 if (tmpIter == seqRunner->globalSeqRunnerRef_.end()) {
1732 seqRunner->globalSeqRunnerRef_.emplace(env, gloableSeqRunnerRef);
1735 return seqRunner;
1738 bool SequenceRunnerManager::TriggerGlobalSeqRunner(napi_env env, SequenceRunner* seqRunner)
1741 if (seqRunner->isGlobalRunner_) {
1742 auto iter = seqRunner->globalSeqRunnerRef_.find(env);
1743 if (iter == seqRunner->globalSeqRunnerRef_.end()) {
1748 napi_reference_unref(env, seqRunner->seqRunnerRef_, nullptr);
1753 uint64_t SequenceRunnerManager::DecreaseSeqCount(SequenceRunner* seqRunner)
1756 return --(seqRunner->count_);
1759 void SequenceRunnerManager::RemoveGlobalSeqRunnerRef(napi_env env, SequenceRunner* seqRunner)
1762 auto iter = seqRunner->globalSeqRunnerRef_.find(env);
1763 if (iter != seqRunner->globalSeqRunnerRef_.end()) {
1765 seqRunner->globalSeqRunnerRef_.erase(iter);
1778 void SequenceRunnerManager::GlobalSequenceRunnerDestructor(napi_env env, SequenceRunner *seqRunner)
1780 RemoveGlobalSeqRunnerRef(env, seqRunner);
1781 if (DecreaseSeqCount(seqRunner) == 0) {
1782 RemoveSequenceRunner(seqRunner->seqName_);
1783 TaskGroupManager::GetInstance().RemoveSequenceRunner(seqRunner->seqRunnerId_);
1784 delete seqRunner;