• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (c) 2022 Huawei Device Co., Ltd.
3   * Licensed under the Apache License, Version 2.0 (the "License");
4   * you may not use this file except in compliance with the License.
5   * You may obtain a copy of the License at
6   *
7   *     http://www.apache.org/licenses/LICENSE-2.0
8   *
9   * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  
16  #include "worker_runner.h"
17  
18  #include "helper/object_helper.h"
19  
20  namespace Commonlibrary::Concurrent::WorkerModule {
WorkerRunner(WorkerStartCallback callback)21  WorkerRunner::WorkerRunner(WorkerStartCallback callback) : callback_(callback), selfThreadId_(uv_thread_self()) {}
22  
~WorkerRunner()23  WorkerRunner::~WorkerRunner()
24  {
25      Common::Helper::CloseHelp::DeletePointer(workerInnerRunner_, false);
26  }
27  
Run()28  void WorkerRunner::WorkerInnerRunner::Run()
29  {
30      if (runner_ != nullptr) {
31          runner_->Run();
32      }
33  }
34  
WorkerInnerRunner(const WorkerRunner * runner)35  WorkerRunner::WorkerInnerRunner::WorkerInnerRunner(const WorkerRunner* runner) : runner_(runner) {}
36  
Run() const37  void WorkerRunner::Run() const
38  {
39      if (callback_.callback != nullptr) {
40          callback_.callback(callback_.data);
41      }
42  }
43  
Execute()44  bool WorkerRunner::Execute()
45  {
46      workerInnerRunner_ = new WorkerInnerRunner(this);
47      return workerInnerRunner_->Start();
48  }
49  } // namespace Commonlibrary::Concurrent::WorkerModule
50