1 /*
2  * Copyright (c) 2023 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 #ifndef FOUNDATION_RESOURCESCHEDULE_DEVICE_STANDBY_INTERFACES_KITS_NAPI_INCLUDE_COMMON_H
17 #define FOUNDATION_RESOURCESCHEDULE_DEVICE_STANDBY_INTERFACES_KITS_NAPI_INCLUDE_COMMON_H
18 
19 #include <string_ex.h>
20 #include <memory>
21 
22 #include "standby_service_errors.h"
23 #include "napi/native_api.h"
24 #include "napi/native_node_api.h"
25 
26 namespace OHOS {
27 namespace DevStandbyMgr {
28 struct AsyncWorkData {
29     explicit AsyncWorkData(napi_env napiEnv);
30     virtual ~AsyncWorkData();
31     napi_env env;
32     napi_async_work asyncWork = nullptr;
33     napi_deferred deferred = nullptr;
34     napi_ref callback = nullptr;
35     bool isCallback = false;
36     int32_t errCode = 0;
37 };
38 
39 class Common {
40 public:
41     static napi_value NapiGetNull(napi_env env);
42 
43     static void PaddingAsyncWorkData(
44         const napi_env& env, const napi_ref& callback, AsyncWorkData& info, napi_value& promise);
45 
46     static void ReturnCallbackPromise(const napi_env& env, const AsyncWorkData& info,
47         const napi_value& result);
48 
49     static void SetCallback(const napi_env& env, const napi_ref& callbackIn,
50         const int32_t& errCode, const napi_value& result);
51 
52     static napi_value GetCallbackErrorValue(napi_env env, const int32_t errCode, const std::string errMsg);
53 
54     static napi_value SetPromise(const napi_env& env, const AsyncWorkData& info, const napi_value& result);
55 
56     static void HandleErrCode(const napi_env &env, int32_t errCode);
57 
58     static std::string FindErrMsg(const napi_env& env, const int32_t errCode);
59 
60     static int32_t FindErrCode(const napi_env& env, const int32_t errCodeIn);
61 
62     static bool HandleParamErr(const napi_env& env, int32_t errCode);
63 
64     static void SetInt32Value(const napi_env& env, const std::string& fieldStr,
65         const int32_t intValue, napi_value& result);
66 
67     static void SetUint32Value(const napi_env& env, const std::string& fieldStr,
68         const uint32_t uintValue, napi_value& result);
69 
70     static void SetStringValue(const napi_env& env, const std::string& fieldStr,
71         const std::string& stringValue, napi_value& result);
72 
73     static napi_value GetStringValue(const napi_env &env, const napi_value &value, std::string &result);
74 
75     static napi_value GetUint32Value(const napi_env& env, const napi_value& value, uint32_t& result);
76 
77     static napi_value GetInt32Value(const napi_env& env, const napi_value& value, int32_t& result);
78 
79     static napi_value GetNamedInt32Value(const napi_env &env, napi_value &object, const char* utf8name,
80         int32_t& result);
81 
82     static napi_value GetNamedStringValue(const napi_env &env, napi_value &object, const char* utf8name,
83         std::string& result);
84 };
85 }  // namespace DevStandbyMgr
86 }  // namespace OHOS
87 #endif  // FOUNDATION_RESOURCESCHEDULE_DEVICE_STANDBY_INTERFACES_KITS_NAPI_INCLUDE_COMMON_H