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