1  /*
2   * Copyright (c) 2021-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 "common_func.h"
17  
18  #include "../common/napi/n_func_arg.h"
19  
20  namespace OHOS {
21  namespace DistributedFS {
22  namespace ModuleFile {
23  using namespace std;
24  
GetCallbackHandles(napi_env env,napi_value object)25  tuple<bool, napi_ref, napi_ref, napi_ref> CommonFunc::GetCallbackHandles(napi_env env, napi_value object)
26  {
27      bool succ = false;
28      NVal prop = NVal(env, object);
29      napi_value successProp, failProp, completeProp;
30      napi_ref successHandle = nullptr;
31      napi_ref failHandle = nullptr;
32      napi_ref completeHandle = nullptr;
33      const string success = "success";
34      const string fail = "fail";
35      const string complete = "complete";
36  
37      successProp = prop.GetProp(success).val_;
38      if (successProp != nullptr) {
39          napi_create_reference(env, successProp, 1, &successHandle);
40          succ = true;
41      }
42  
43      failProp = prop.GetProp(fail).val_;
44      if (succ && failProp != nullptr) {
45          napi_create_reference(env, failProp, 1, &failHandle);
46          succ = true;
47      }
48  
49      completeProp = prop.GetProp(complete).val_;
50      if (succ && completeProp != nullptr) {
51          napi_create_reference(env, completeProp, 1, &completeHandle);
52          succ = true;
53      }
54  
55      return { succ, successHandle, failHandle, completeHandle };
56  }
57  } // namespace ModuleFile
58  } // namespace DistributedFS
59  } // namespace OHOS
60