1b1b8bc3fSopenharmony_ci/*
2b1b8bc3fSopenharmony_ci * Copyright (c) 2022-2024 Huawei Device Co., Ltd.
3b1b8bc3fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4b1b8bc3fSopenharmony_ci * you may not use this file except in compliance with the License.
5b1b8bc3fSopenharmony_ci * You may obtain a copy of the License at
6b1b8bc3fSopenharmony_ci *
7b1b8bc3fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8b1b8bc3fSopenharmony_ci *
9b1b8bc3fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10b1b8bc3fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11b1b8bc3fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12b1b8bc3fSopenharmony_ci * See the License for the specific language governing permissions and
13b1b8bc3fSopenharmony_ci * limitations under the License.
14b1b8bc3fSopenharmony_ci */
15b1b8bc3fSopenharmony_ci
16b1b8bc3fSopenharmony_ci#ifndef COMMUNICATIONNETMANAGER_BASE_NETMANAGER_BASE_NAPI_UTILS_H
17b1b8bc3fSopenharmony_ci#define COMMUNICATIONNETMANAGER_BASE_NETMANAGER_BASE_NAPI_UTILS_H
18b1b8bc3fSopenharmony_ci
19b1b8bc3fSopenharmony_ci#include <functional>
20b1b8bc3fSopenharmony_ci#include <string>
21b1b8bc3fSopenharmony_ci#include <vector>
22b1b8bc3fSopenharmony_ci
23b1b8bc3fSopenharmony_ci#include <napi/native_api.h>
24b1b8bc3fSopenharmony_ci#include <napi/native_common.h>
25b1b8bc3fSopenharmony_ci#include <uv.h>
26b1b8bc3fSopenharmony_ci
27b1b8bc3fSopenharmony_ci#include "netmanager_secure_data.h"
28b1b8bc3fSopenharmony_ci
29b1b8bc3fSopenharmony_cinamespace OHOS {
30b1b8bc3fSopenharmony_cinamespace NetManagerStandard {
31b1b8bc3fSopenharmony_cinamespace NapiUtils {
32b1b8bc3fSopenharmony_cinapi_valuetype GetValueType(napi_env env, napi_value value);
33b1b8bc3fSopenharmony_ci
34b1b8bc3fSopenharmony_ci/* named property */
35b1b8bc3fSopenharmony_cibool HasNamedProperty(napi_env env, napi_value object, const std::string &propertyName);
36b1b8bc3fSopenharmony_cinapi_value GetNamedProperty(napi_env env, napi_value object, const std::string &propertyName);
37b1b8bc3fSopenharmony_civoid SetNamedProperty(napi_env env, napi_value object, const std::string &name, napi_value value);
38b1b8bc3fSopenharmony_cistd::vector<std::string> GetPropertyNames(napi_env env, napi_value object);
39b1b8bc3fSopenharmony_ci
40b1b8bc3fSopenharmony_ci/* UINT32 */
41b1b8bc3fSopenharmony_cinapi_value CreateUint32(napi_env env, uint32_t code);
42b1b8bc3fSopenharmony_ciuint32_t GetUint32FromValue(napi_env env, napi_value value);
43b1b8bc3fSopenharmony_ciuint32_t GetUint32Property(napi_env env, napi_value object, const std::string &propertyName);
44b1b8bc3fSopenharmony_civoid SetUint32Property(napi_env env, napi_value object, const std::string &name, uint32_t value);
45b1b8bc3fSopenharmony_ci
46b1b8bc3fSopenharmony_ci/* INT32 */
47b1b8bc3fSopenharmony_cinapi_value CreateInt32(napi_env env, int32_t code);
48b1b8bc3fSopenharmony_ciint32_t GetInt32FromValue(napi_env env, napi_value value);
49b1b8bc3fSopenharmony_ciint32_t GetInt32Property(napi_env env, napi_value object, const std::string &propertyName);
50b1b8bc3fSopenharmony_civoid SetInt32Property(napi_env env, napi_value object, const std::string &name, int32_t value);
51b1b8bc3fSopenharmony_ci
52b1b8bc3fSopenharmony_ci/* INT64 */
53b1b8bc3fSopenharmony_cinapi_value CreateInt64(napi_env env, int64_t code);
54b1b8bc3fSopenharmony_ciint64_t GetInt64Property(napi_env env, napi_value object, const std::string &propertyName);
55b1b8bc3fSopenharmony_ciint64_t GetInt64FromValue(napi_env env, napi_value value);
56b1b8bc3fSopenharmony_civoid SetInt64Property(napi_env env, napi_value object, const std::string &name, int64_t value);
57b1b8bc3fSopenharmony_ci
58b1b8bc3fSopenharmony_ci/* String UTF8 */
59b1b8bc3fSopenharmony_cinapi_value CreateStringUtf8(napi_env env, const std::string &str);
60b1b8bc3fSopenharmony_cistd::string GetStringFromValueUtf8(napi_env env, napi_value value);
61b1b8bc3fSopenharmony_ciSecureData GetSecureDataFromValueUtf8(napi_env env, napi_value value);
62b1b8bc3fSopenharmony_cistd::string GetStringPropertyUtf8(napi_env env, napi_value object, const std::string &propertyName);
63b1b8bc3fSopenharmony_ciSecureData GetSecureDataPropertyUtf8(napi_env env, napi_value object, const std::string &propertyName);
64b1b8bc3fSopenharmony_civoid SetStringPropertyUtf8(napi_env env, napi_value object, const std::string &name, const std::string &value);
65b1b8bc3fSopenharmony_ci
66b1b8bc3fSopenharmony_ci/* array buffer */
67b1b8bc3fSopenharmony_cibool ValueIsArrayBuffer(napi_env env, napi_value value);
68b1b8bc3fSopenharmony_civoid *GetInfoFromArrayBufferValue(napi_env env, napi_value value, size_t *length);
69b1b8bc3fSopenharmony_cinapi_value CreateArrayBuffer(napi_env env, size_t length, void **data);
70b1b8bc3fSopenharmony_ci
71b1b8bc3fSopenharmony_ci/* object */
72b1b8bc3fSopenharmony_cinapi_value CreateObject(napi_env env);
73b1b8bc3fSopenharmony_ci
74b1b8bc3fSopenharmony_ci/* undefined */
75b1b8bc3fSopenharmony_cinapi_value GetUndefined(napi_env env);
76b1b8bc3fSopenharmony_ci
77b1b8bc3fSopenharmony_ci/* function */
78b1b8bc3fSopenharmony_cinapi_value CallFunction(napi_env env, napi_value recv, napi_value func, size_t argc, const napi_value *argv);
79b1b8bc3fSopenharmony_cinapi_value CreateFunction(napi_env env, const std::string &name, napi_callback func, void *arg);
80b1b8bc3fSopenharmony_ci
81b1b8bc3fSopenharmony_ci/* reference */
82b1b8bc3fSopenharmony_cinapi_ref CreateReference(napi_env env, napi_value callback);
83b1b8bc3fSopenharmony_cinapi_value GetReference(napi_env env, napi_ref callbackRef);
84b1b8bc3fSopenharmony_civoid DeleteReference(napi_env env, napi_ref callbackRef);
85b1b8bc3fSopenharmony_ci
86b1b8bc3fSopenharmony_ci/* boolean */
87b1b8bc3fSopenharmony_cibool GetBooleanProperty(napi_env env, napi_value object, const std::string &propertyName);
88b1b8bc3fSopenharmony_civoid SetBooleanProperty(napi_env env, napi_value object, const std::string &name, bool value);
89b1b8bc3fSopenharmony_cinapi_value GetBoolean(napi_env env, bool value);
90b1b8bc3fSopenharmony_cibool GetBooleanValue(napi_env env, napi_value value);
91b1b8bc3fSopenharmony_ci
92b1b8bc3fSopenharmony_ci/* define properties */
93b1b8bc3fSopenharmony_civoid DefineProperties(napi_env env, napi_value object,
94b1b8bc3fSopenharmony_ci                      const std::initializer_list<napi_property_descriptor> &properties);
95b1b8bc3fSopenharmony_ci
96b1b8bc3fSopenharmony_ci/* array */
97b1b8bc3fSopenharmony_cinapi_value CreateArray(napi_env env, size_t length);
98b1b8bc3fSopenharmony_civoid SetArrayElement(napi_env env, napi_value array, uint32_t index, napi_value value);
99b1b8bc3fSopenharmony_cibool IsArray(napi_env env, napi_value value);
100b1b8bc3fSopenharmony_ciuint32_t GetArrayLength(napi_env env, napi_value arr);
101b1b8bc3fSopenharmony_cinapi_value GetArrayElement(napi_env env, napi_value arr, uint32_t index);
102b1b8bc3fSopenharmony_ci
103b1b8bc3fSopenharmony_ci/* libuv */
104b1b8bc3fSopenharmony_civoid CreateUvQueueWork(napi_env env, void *data, void(handler)(uv_work_t *, int status));
105b1b8bc3fSopenharmony_ci
106b1b8bc3fSopenharmony_ci/* scope */
107b1b8bc3fSopenharmony_cinapi_handle_scope OpenScope(napi_env env);
108b1b8bc3fSopenharmony_civoid CloseScope(napi_env env, napi_handle_scope scope);
109b1b8bc3fSopenharmony_ci/* error */
110b1b8bc3fSopenharmony_cinapi_value CreateErrorMessage(napi_env env, int32_t errorCodeconst, const std::string &errorMessage);
111b1b8bc3fSopenharmony_ci
112b1b8bc3fSopenharmony_civoid HookForEnvCleanup(void *data);
113b1b8bc3fSopenharmony_civoid SetEnvValid(napi_env env);
114b1b8bc3fSopenharmony_cibool IsEnvValid(napi_env env);
115b1b8bc3fSopenharmony_ci
116b1b8bc3fSopenharmony_ciusing UvHandler = std::function<void(napi_env)>;
117b1b8bc3fSopenharmony_cinapi_value GetGlobal(napi_env env);
118b1b8bc3fSopenharmony_ciuint64_t CreateUvHandlerQueue(napi_env env);
119b1b8bc3fSopenharmony_cinapi_value GetValueFromGlobal(napi_env env, const std::string &className);
120b1b8bc3fSopenharmony_civoid CreateUvQueueWorkByModuleId(napi_env env, const UvHandler &handler, uint64_t id);
121b1b8bc3fSopenharmony_ci} // namespace NapiUtils
122b1b8bc3fSopenharmony_ci} // namespace NetManagerStandard
123b1b8bc3fSopenharmony_ci} // namespace OHOS
124b1b8bc3fSopenharmony_ci
125b1b8bc3fSopenharmony_ci#endif // COMMUNICATIONNETMANAGER_BASE_NETMANAGER_BASE_NAPI_UTILS_H
126