From e06e815b036aa51c00d4c0e6ee2ce3036175c0a8 Mon Sep 17 00:00:00 2001 From: maosiping Date: Wed, 23 Feb 2022 16:02:54 +0800 Subject: [PATCH 1/2] add some interface Signed-off-by: maosiping --- frameworks/js/napi/connection/BUILD.gn | 1 + frameworks/js/napi/connection/CMakeLists.txt | 1 + .../include/getdefaultnet_context.h | 7 +++ .../include/parse_nethandle_context.h | 51 ++++++++++++++++ .../src/parse_nethandle_context.cpp | 55 +++++++++++++++++ .../include/connection_async_work.h | 16 +++++ .../async_work/src/connection_async_work.cpp | 44 +++++++++++++ .../connection_exec/include/connection_exec.h | 17 ++++++ .../connection_exec/src/connection_exec.cpp | 61 ++++++++++++++----- .../include/connection_module.h | 8 +++ .../src/connection_module.cpp | 33 ++++++++++ .../connection/constant/include/constant.h | 1 + .../include/net_conn_callback_observer.h | 11 ++-- .../include/netmanager_base_napi_utils.h | 2 + .../src/netmanager_base_napi_utils.cpp | 7 +++ 15 files changed, 293 insertions(+), 22 deletions(-) create mode 100644 frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h create mode 100644 frameworks/js/napi/connection/async_context/src/parse_nethandle_context.cpp diff --git a/frameworks/js/napi/connection/BUILD.gn b/frameworks/js/napi/connection/BUILD.gn index cdb62cdc4..7748fbfef 100644 --- a/frameworks/js/napi/connection/BUILD.gn +++ b/frameworks/js/napi/connection/BUILD.gn @@ -74,6 +74,7 @@ ohos_shared_library("connection") { sources = [ "async_context/src/getaddressbyname_context.cpp", "async_context/src/getdefaultnet_context.cpp", + "async_context/src/parse_nethandle_context.cpp", "async_context/src/register_context.cpp", "async_work/src/connection_async_work.cpp", "connection_exec/src/connection_exec.cpp", diff --git a/frameworks/js/napi/connection/CMakeLists.txt b/frameworks/js/napi/connection/CMakeLists.txt index c7c36f842..77def5288 100644 --- a/frameworks/js/napi/connection/CMakeLists.txt +++ b/frameworks/js/napi/connection/CMakeLists.txt @@ -23,6 +23,7 @@ add_library(connection SHARED options/src/net_address.cpp async_context/src/getaddressbyname_context.cpp async_context/src/getdefaultnet_context.cpp + async_context/src/parse_nethandle_context.cpp connection_exec/src/connection_exec.cpp async_work/src/connection_async_work.cpp connection_module/src/connection_module.cpp diff --git a/frameworks/js/napi/connection/async_context/include/getdefaultnet_context.h b/frameworks/js/napi/connection/async_context/include/getdefaultnet_context.h index 059d60776..7f547fe65 100644 --- a/frameworks/js/napi/connection/async_context/include/getdefaultnet_context.h +++ b/frameworks/js/napi/connection/async_context/include/getdefaultnet_context.h @@ -17,6 +17,7 @@ #define COMMUNICATIONNETMANAGERBASE_GETDEFAULTNET_CONTEXT_H #include "napi/native_api.h" +#include "net_handle.h" #include "netmanager_base_base_context.h" #include "nocopyable.h" @@ -31,9 +32,15 @@ public: void ParseParams(napi_value *params, size_t paramsCount); + NetHandle netHandle; + + bool hasDefaultNet; + private: bool CheckParamsType(napi_value *params, size_t paramsCount); }; + +using HasDefaultNetContext = GetDefaultNetContext; } // namespace OHOS::NetManagerStandard #endif /* COMMUNICATIONNETMANAGERBASE_GETDEFAULTNET_CONTEXT_H */ diff --git a/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h b/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h new file mode 100644 index 000000000..043062238 --- /dev/null +++ b/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef NETMANAGER_BASE_PARSE_NETHANDLE_CONTEXT_H +#define NETMANAGER_BASE_PARSE_NETHANDLE_CONTEXT_H + +#include "napi/native_api.h" +#include "net_all_capabilities.h" +#include "net_handle.h" +#include "net_link_info.h" +#include "netmanager_base_base_context.h" +#include "nocopyable.h" + +namespace OHOS::NetManagerStandard { +class ParseNetHandleContext final : public BaseContext { +public: + DISALLOW_COPY_AND_MOVE(ParseNetHandleContext); + + ParseNetHandleContext() = delete; + + explicit ParseNetHandleContext(napi_env env, EventManager *manager); + + void ParseParams(napi_value *params, size_t paramsCount); + + NetHandle netHandle; + + NetAllCapabilities capabilities; + + NetLinkInfo linkInfo; + +private: + bool CheckParamsType(napi_value *params, size_t paramsCount); +}; + +using GetNetCapabilitiesContext = ParseNetHandleContext; +using GetConnectPropertiesContext = ParseNetHandleContext; +} // namespace OHOS::NetManagerStandard + +#endif /* NETMANAGER_BASE_PARSE_NETHANDLE_CONTEXT_H */ diff --git a/frameworks/js/napi/connection/async_context/src/parse_nethandle_context.cpp b/frameworks/js/napi/connection/async_context/src/parse_nethandle_context.cpp new file mode 100644 index 000000000..26a927939 --- /dev/null +++ b/frameworks/js/napi/connection/async_context/src/parse_nethandle_context.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "parse_nethandle_context.h" + +#include "constant.h" +#include "netmanager_base_napi_utils.h" + +namespace OHOS::NetManagerStandard { +ParseNetHandleContext::ParseNetHandleContext(napi_env env, EventManager *manager) : BaseContext(env, manager) {} + +void ParseNetHandleContext::ParseParams(napi_value *params, size_t paramsCount) +{ + if (!CheckParamsType(params, paramsCount)) { + return; + } + + int32_t netId = NapiUtils::GetInt32Property(GetEnv(), params[0], KEY_NET_ID); + if (netId == 0) { + return; + } + netHandle.SetNetId(netId); + + if (paramsCount == PARAM_OPTIONS_AND_CALLBACK) { + SetParseOK(SetCallback(params[1]) == napi_ok); + return; + } + SetParseOK(true); +} + +bool ParseNetHandleContext::CheckParamsType(napi_value *params, size_t paramsCount) +{ + if (paramsCount == PARAM_JUST_OPTIONS) { + return NapiUtils::GetValueType(GetEnv(), params[0]) == napi_object; + } + + if (paramsCount == PARAM_OPTIONS_AND_CALLBACK) { + return NapiUtils::GetValueType(GetEnv(), params[0]) == napi_object && + NapiUtils::GetValueType(GetEnv(), params[1]) == napi_function; + } + return false; +} +} // namespace OHOS::NetManagerStandard \ No newline at end of file diff --git a/frameworks/js/napi/connection/async_work/include/connection_async_work.h b/frameworks/js/napi/connection/async_work/include/connection_async_work.h index 006baaa6b..becfa725a 100644 --- a/frameworks/js/napi/connection/async_work/include/connection_async_work.h +++ b/frameworks/js/napi/connection/async_work/include/connection_async_work.h @@ -33,6 +33,22 @@ public: static void GetDefaultNetCallback(napi_env env, napi_status status, void *data); + static void ExecHasDefaultNet(napi_env env, void *data); + + static void HasDefaultNetCallback(napi_env env, napi_status status, void *data); + + static void ExecGetNetCapabilities(napi_env env, void *data); + + static void GetNetCapabilitiesCallback(napi_env env, napi_status status, void *data); + + static void ExecGetConnectProperties(napi_env env, void *data); + + static void GetConnectPropertiesCallback(napi_env env, napi_status status, void *data); + + static void ExecGetAddressesByName(napi_env env, void *data); + + static void GetAddressesByNameCallback(napi_env env, napi_status status, void *data); + class NetHandleAsyncWork final { public: DISALLOW_COPY_AND_MOVE(NetHandleAsyncWork); diff --git a/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp b/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp index 7d0e7c076..08ddaa554 100644 --- a/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp +++ b/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp @@ -17,8 +17,52 @@ #include "connection_exec.h" #include "netmanager_base_base_async_work.h" +#include "parse_nethandle_context.h" namespace OHOS::NetManagerStandard { +void ConnectionAsyncWork::ExecGetAddressesByName(napi_env env, void *data) +{ + BaseAsyncWork::ExecAsyncWork(env, data); +} + +void ConnectionAsyncWork::GetAddressesByNameCallback(napi_env env, napi_status status, void *data) +{ + BaseAsyncWork::AsyncWorkCallback(env, status, + data); +} + +void ConnectionAsyncWork::ExecHasDefaultNet(napi_env env, void *data) +{ + BaseAsyncWork::ExecAsyncWork(env, data); +} + +void ConnectionAsyncWork::HasDefaultNetCallback(napi_env env, napi_status status, void *data) +{ + BaseAsyncWork::AsyncWorkCallback(env, status, data); +} + +void ConnectionAsyncWork::ExecGetNetCapabilities(napi_env env, void *data) +{ + BaseAsyncWork::ExecAsyncWork(env, data); +} + +void ConnectionAsyncWork::GetNetCapabilitiesCallback(napi_env env, napi_status status, void *data) +{ + BaseAsyncWork::AsyncWorkCallback(env, status, + data); +} + +void ConnectionAsyncWork::ExecGetConnectProperties(napi_env env, void *data) +{ + BaseAsyncWork::ExecAsyncWork(env, data); +} + +void ConnectionAsyncWork::GetConnectPropertiesCallback(napi_env env, napi_status status, void *data) +{ + BaseAsyncWork::AsyncWorkCallback( + env, status, data); +} + void ConnectionAsyncWork::ExecGetDefaultNet(napi_env env, void *data) { BaseAsyncWork::ExecAsyncWork(env, data); diff --git a/frameworks/js/napi/connection/connection_exec/include/connection_exec.h b/frameworks/js/napi/connection/connection_exec/include/connection_exec.h index 5ed2971b7..5c0f30514 100644 --- a/frameworks/js/napi/connection/connection_exec/include/connection_exec.h +++ b/frameworks/js/napi/connection/connection_exec/include/connection_exec.h @@ -22,6 +22,7 @@ #include "getdefaultnet_context.h" #include "napi/native_api.h" #include "nocopyable.h" +#include "parse_nethandle_context.h" #include "register_context.h" namespace OHOS::NetManagerStandard { @@ -37,6 +38,22 @@ public: static napi_value GetDefaultNetCallback(GetDefaultNetContext *context); + static bool ExecHasDefaultNet(HasDefaultNetContext *context); + + static napi_value HasDefaultNetCallback(HasDefaultNetContext *context); + + static bool ExecGetNetCapabilities(GetNetCapabilitiesContext *context); + + static napi_value GetNetCapabilitiesCallback(GetNetCapabilitiesContext *context); + + static bool ExecGetConnectProperties(GetConnectPropertiesContext *context); + + static napi_value GetConnectPropertiesCallback(GetConnectPropertiesContext *context); + + static bool ExecGetAddressByName(GetAddressByNameContext *context); + + static napi_value GetAddressByNameCallback(GetAddressByNameContext *context); + class NetHandleExec final { public: DISALLOW_COPY_AND_MOVE(NetHandleExec); diff --git a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp index 087d054e5..25c4bbeec 100644 --- a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp +++ b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp @@ -15,8 +15,8 @@ #include "connection_exec.h" -#include "connection_module.h" #include "constant.h" +#include "net_conn_callback_observer.h" #include "net_conn_client.h" #include "netconnection.h" #include "netmanager_base_log.h" @@ -26,28 +26,57 @@ static constexpr const int MAX_HOST_LEN = 256; namespace OHOS::NetManagerStandard { -bool ConnectionExec::ExecGetDefaultNet(GetDefaultNetContext *context) +bool ConnectionExec::ExecGetAddressByName(GetAddressByNameContext *context) { - (void)context; + return NetHandleExec::ExecGetAddressesByName(context); +} - return true; +napi_value ConnectionExec::GetAddressByNameCallback(GetAddressByNameContext *context) +{ + return NetHandleExec::GetAddressesByNameCallback(context); +} + +bool ConnectionExec::ExecGetDefaultNet(GetDefaultNetContext *context) +{ + return DelayedSingleton::GetInstance()->GetDefaultNet(context->netHandle) == 0; } napi_value ConnectionExec::GetDefaultNetCallback(GetDefaultNetContext *context) { - napi_value netHandle = NapiUtils::CreateObject(context->GetEnv()); - if (NapiUtils::GetValueType(context->GetEnv(), netHandle) != napi_object) { - return NapiUtils::GetUndefined(context->GetEnv()); - } + return NetConnCallbackObserver::CreateNetHandle(context->GetEnv(), new NetHandle(context->netHandle)); +} + +bool ConnectionExec::ExecHasDefaultNet(HasDefaultNetContext *context) +{ + return DelayedSingleton::GetInstance()->HasDefaultNet(context->hasDefaultNet) == 0; +} - std::initializer_list properties = { - DECLARE_NAPI_FUNCTION(ConnectionModule::NetHandleInterface::FUNCTION_GET_ADDRESSES_BY_NAME, - ConnectionModule::NetHandleInterface::GetAddressesByName), - DECLARE_NAPI_FUNCTION(ConnectionModule::NetHandleInterface::FUNCTION_GET_ADDRESS_BY_NAME, - ConnectionModule::NetHandleInterface::GetAddressByName), - }; - NapiUtils::DefineProperties(context->GetEnv(), netHandle, properties); - return netHandle; +napi_value ConnectionExec::HasDefaultNetCallback(HasDefaultNetContext *context) +{ + return NapiUtils::GetBoolean(context->GetEnv(), context->hasDefaultNet); +} + +bool ConnectionExec::ExecGetNetCapabilities(GetNetCapabilitiesContext *context) +{ + return DelayedSingleton::GetInstance()->GetNetCapabilities(context->netHandle, + context->capabilities) == 0; +} + +napi_value ConnectionExec::GetNetCapabilitiesCallback(GetNetCapabilitiesContext *context) +{ + return NetConnCallbackObserver::CreateNetCapabilities(context->GetEnv(), + new NetAllCapabilities(context->capabilities)); +} + +bool ConnectionExec::ExecGetConnectProperties(GetConnectPropertiesContext *context) +{ + return DelayedSingleton::GetInstance()->GetConnectionProperties(context->netHandle, + context->linkInfo) == 0; +} + +napi_value ConnectionExec::GetConnectPropertiesCallback(GetConnectPropertiesContext *context) +{ + return NetConnCallbackObserver::CreateConnectionProperties(context->GetEnv(), new NetLinkInfo(context->linkInfo)); } bool ConnectionExec::NetHandleExec::ExecGetAddressesByName(GetAddressByNameContext *context) diff --git a/frameworks/js/napi/connection/connection_module/include/connection_module.h b/frameworks/js/napi/connection/connection_module/include/connection_module.h index 65b08814c..3fd594d49 100644 --- a/frameworks/js/napi/connection/connection_module/include/connection_module.h +++ b/frameworks/js/napi/connection/connection_module/include/connection_module.h @@ -22,7 +22,11 @@ namespace OHOS::NetManagerStandard { class ConnectionModule final { public: static constexpr const char *FUNCTION_GET_DEFAULT_NET = "getDefaultNet"; + static constexpr const char *FUNCTION_HAS_DEFAULT_NET = "hasDefaultNet"; + static constexpr const char *FUNCTION_GET_NET_CAPABILITIES = "getNetCapabilities"; + static constexpr const char *FUNCTION_GET_CONNECTION_PROPERTIES = "getConnectionProperties"; static constexpr const char *FUNCTION_CREATE_NET_CONNECTION = "createNetConnection"; + static constexpr const char *FUNCTION_GET_ADDRESSES_BY_NAME = "getAddressesByName"; static constexpr const char *INTERFACE_NET_CONNECTION = "NetConnection"; static napi_value InitConnectionModule(napi_env env, napi_value exports); @@ -51,6 +55,10 @@ public: private: static napi_value GetDefaultNet(napi_env env, napi_callback_info info); static napi_value CreateNetConnection(napi_env env, napi_callback_info info); + static napi_value GetAddressesByName(napi_env env, napi_callback_info info); + static napi_value HasDefaultNet(napi_env env, napi_callback_info info); + static napi_value GetNetCapabilities(napi_env env, napi_callback_info info); + static napi_value GetConnectionProperties(napi_env env, napi_callback_info info); }; } // namespace OHOS::NetManagerStandard diff --git a/frameworks/js/napi/connection/connection_module/src/connection_module.cpp b/frameworks/js/napi/connection/connection_module/src/connection_module.cpp index 1d866e25f..921ff9f7c 100644 --- a/frameworks/js/napi/connection/connection_module/src/connection_module.cpp +++ b/frameworks/js/napi/connection/connection_module/src/connection_module.cpp @@ -23,6 +23,7 @@ #include "netconnection.h" #include "netmanager_base_log.h" #include "netmanager_base_module_template.h" +#include "parse_nethandle_context.h" #include "register_context.h" static constexpr const char *CONNECTION_MODULE_NAME = "net.connection"; @@ -117,6 +118,10 @@ napi_value ConnectionModule::InitConnectionModule(napi_env env, napi_value expor std::initializer_list functions = { DECLARE_NAPI_FUNCTION(FUNCTION_GET_DEFAULT_NET, GetDefaultNet), DECLARE_NAPI_FUNCTION(FUNCTION_CREATE_NET_CONNECTION, CreateNetConnection), + DECLARE_NAPI_FUNCTION(FUNCTION_GET_ADDRESSES_BY_NAME, GetAddressesByName), + DECLARE_NAPI_FUNCTION(FUNCTION_HAS_DEFAULT_NET, HasDefaultNet), + DECLARE_NAPI_FUNCTION(FUNCTION_GET_NET_CAPABILITIES, GetNetCapabilities), + DECLARE_NAPI_FUNCTION(FUNCTION_GET_CONNECTION_PROPERTIES, GetConnectionProperties), }; NapiUtils::DefineProperties(env, exports, functions); @@ -130,6 +135,34 @@ napi_value ConnectionModule::InitConnectionModule(napi_env env, napi_value expor return exports; } +napi_value ConnectionModule::GetAddressesByName(napi_env env, napi_callback_info info) +{ + return ModuleTemplate::Interface(env, info, FUNCTION_GET_ADDRESSES_BY_NAME, nullptr, + ConnectionAsyncWork::ExecGetAddressesByName, + ConnectionAsyncWork::GetAddressesByNameCallback); +} + +napi_value ConnectionModule::HasDefaultNet(napi_env env, napi_callback_info info) +{ + return ModuleTemplate::Interface(env, info, FUNCTION_HAS_DEFAULT_NET, nullptr, + ConnectionAsyncWork::ExecHasDefaultNet, + ConnectionAsyncWork::GetAddressesByNameCallback); +} + +napi_value ConnectionModule::GetNetCapabilities(napi_env env, napi_callback_info info) +{ + return ModuleTemplate::Interface(env, info, FUNCTION_GET_NET_CAPABILITIES, nullptr, + ConnectionAsyncWork::ExecGetNetCapabilities, + ConnectionAsyncWork::GetNetCapabilitiesCallback); +} + +napi_value ConnectionModule::GetConnectionProperties(napi_env env, napi_callback_info info) +{ + return ModuleTemplate::Interface( + env, info, FUNCTION_GET_CONNECTION_PROPERTIES, nullptr, ConnectionAsyncWork::ExecGetConnectProperties, + ConnectionAsyncWork::GetConnectPropertiesCallback); +} + napi_value ConnectionModule::CreateNetConnection(napi_env env, napi_callback_info info) { return ModuleTemplate::NewInstance(env, info, INTERFACE_NET_CONNECTION, ParseNetConnectionParams, diff --git a/frameworks/js/napi/connection/constant/include/constant.h b/frameworks/js/napi/connection/constant/include/constant.h index fff804eac..22b9d7874 100644 --- a/frameworks/js/napi/connection/constant/include/constant.h +++ b/frameworks/js/napi/connection/constant/include/constant.h @@ -60,6 +60,7 @@ static constexpr const char *KEY_NET_HANDLE = "netHandle"; static constexpr const char *KEY_BLOCKED = "blocked"; static constexpr const char *KEY_NET_CAP = "netCap"; static constexpr const char *KEY_CONNECTION_PROPERTIES = "connectionProperties"; +static constexpr const char *KEY_NET_ID = "netId"; enum { ARG_NUM_0, diff --git a/frameworks/js/napi/connection/observer/include/net_conn_callback_observer.h b/frameworks/js/napi/connection/observer/include/net_conn_callback_observer.h index 9e2636443..6b435e98c 100644 --- a/frameworks/js/napi/connection/observer/include/net_conn_callback_observer.h +++ b/frameworks/js/napi/connection/observer/include/net_conn_callback_observer.h @@ -36,6 +36,11 @@ public: int32_t NetBlockStatusChange(sptr &netHandle, bool blocked) override; + static napi_value CreateNetHandle(napi_env env, NetHandle *handle); + + static napi_value CreateNetCapabilities(napi_env env, NetAllCapabilities *capabilities); + + static napi_value CreateConnectionProperties(napi_env env, NetLinkInfo *linkInfo); private: template static void CallbackTemplate(uv_work_t *work, int status) { @@ -58,12 +63,6 @@ private: delete work; } - static napi_value CreateNetHandle(napi_env env, NetHandle *handle); - - static napi_value CreateNetCapabilities(napi_env env, NetAllCapabilities *capabilities); - - static napi_value CreateConnectionProperties(napi_env env, NetLinkInfo *linkInfo); - static napi_value CreateNetAvailableParam(napi_env env, void *data); static napi_value CreateNetCapabilitiesChangeParam(napi_env env, void *data); diff --git a/utils/napi_utils/include/netmanager_base_napi_utils.h b/utils/napi_utils/include/netmanager_base_napi_utils.h index 071081443..bac98085d 100644 --- a/utils/napi_utils/include/netmanager_base_napi_utils.h +++ b/utils/napi_utils/include/netmanager_base_napi_utils.h @@ -92,6 +92,8 @@ bool GetBooleanProperty(napi_env env, napi_value object, const std::string &prop void SetBooleanProperty(napi_env env, napi_value object, const std::string &name, bool value); +napi_value GetBoolean(napi_env env, bool value); + /* define properties */ void DefineProperties(napi_env env, napi_value object, diff --git a/utils/napi_utils/src/netmanager_base_napi_utils.cpp b/utils/napi_utils/src/netmanager_base_napi_utils.cpp index d1bd847c7..12829c7b0 100644 --- a/utils/napi_utils/src/netmanager_base_napi_utils.cpp +++ b/utils/napi_utils/src/netmanager_base_napi_utils.cpp @@ -292,6 +292,13 @@ void SetBooleanProperty(napi_env env, napi_value object, const std::string &name napi_set_named_property(env, object, name.c_str(), jsValue); } +napi_value GetBoolean(napi_env env, bool value) +{ + napi_value jsValue = nullptr; + NAPI_CALL(env, napi_get_boolean(env, value, &jsValue)); + return jsValue; +} + /* define properties */ void DefineProperties(napi_env env, napi_value object, -- Gitee From 7dcf4b6d1a1b196780a692e44c882c0ea8924c62 Mon Sep 17 00:00:00 2001 From: maosiping Date: Wed, 23 Feb 2022 17:40:12 +0800 Subject: [PATCH 2/2] fix problem Signed-off-by: maosiping --- .../include/parse_nethandle_context.h | 2 +- .../include/connection_async_work.h | 4 ++-- .../async_work/src/connection_async_work.cpp | 8 +++---- .../connection_exec/include/connection_exec.h | 4 ++-- .../connection_exec/src/connection_exec.cpp | 4 ++-- .../src/connection_module.cpp | 9 +++---- .../src/net_conn_callback_observer.cpp | 24 +++++++++++++++++++ 7 files changed, 40 insertions(+), 15 deletions(-) diff --git a/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h b/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h index 043062238..718f6dce9 100644 --- a/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h +++ b/frameworks/js/napi/connection/async_context/include/parse_nethandle_context.h @@ -45,7 +45,7 @@ private: }; using GetNetCapabilitiesContext = ParseNetHandleContext; -using GetConnectPropertiesContext = ParseNetHandleContext; +using GetConnectionPropertiesContext = ParseNetHandleContext; } // namespace OHOS::NetManagerStandard #endif /* NETMANAGER_BASE_PARSE_NETHANDLE_CONTEXT_H */ diff --git a/frameworks/js/napi/connection/async_work/include/connection_async_work.h b/frameworks/js/napi/connection/async_work/include/connection_async_work.h index becfa725a..675bd84f4 100644 --- a/frameworks/js/napi/connection/async_work/include/connection_async_work.h +++ b/frameworks/js/napi/connection/async_work/include/connection_async_work.h @@ -41,9 +41,9 @@ public: static void GetNetCapabilitiesCallback(napi_env env, napi_status status, void *data); - static void ExecGetConnectProperties(napi_env env, void *data); + static void ExecGetConnectionProperties(napi_env env, void *data); - static void GetConnectPropertiesCallback(napi_env env, napi_status status, void *data); + static void GetConnectionPropertiesCallback(napi_env env, napi_status status, void *data); static void ExecGetAddressesByName(napi_env env, void *data); diff --git a/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp b/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp index 08ddaa554..f00a365e0 100644 --- a/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp +++ b/frameworks/js/napi/connection/async_work/src/connection_async_work.cpp @@ -52,14 +52,14 @@ void ConnectionAsyncWork::GetNetCapabilitiesCallback(napi_env env, napi_status s data); } -void ConnectionAsyncWork::ExecGetConnectProperties(napi_env env, void *data) +void ConnectionAsyncWork::ExecGetConnectionProperties(napi_env env, void *data) { - BaseAsyncWork::ExecAsyncWork(env, data); + BaseAsyncWork::ExecAsyncWork(env, data); } -void ConnectionAsyncWork::GetConnectPropertiesCallback(napi_env env, napi_status status, void *data) +void ConnectionAsyncWork::GetConnectionPropertiesCallback(napi_env env, napi_status status, void *data) { - BaseAsyncWork::AsyncWorkCallback( + BaseAsyncWork::AsyncWorkCallback( env, status, data); } diff --git a/frameworks/js/napi/connection/connection_exec/include/connection_exec.h b/frameworks/js/napi/connection/connection_exec/include/connection_exec.h index 5c0f30514..aca68ac0b 100644 --- a/frameworks/js/napi/connection/connection_exec/include/connection_exec.h +++ b/frameworks/js/napi/connection/connection_exec/include/connection_exec.h @@ -46,9 +46,9 @@ public: static napi_value GetNetCapabilitiesCallback(GetNetCapabilitiesContext *context); - static bool ExecGetConnectProperties(GetConnectPropertiesContext *context); + static bool ExecGetConnectionProperties(GetConnectionPropertiesContext *context); - static napi_value GetConnectPropertiesCallback(GetConnectPropertiesContext *context); + static napi_value GetConnectionPropertiesCallback(GetConnectionPropertiesContext *context); static bool ExecGetAddressByName(GetAddressByNameContext *context); diff --git a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp index 25c4bbeec..7e687f576 100644 --- a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp +++ b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp @@ -68,13 +68,13 @@ napi_value ConnectionExec::GetNetCapabilitiesCallback(GetNetCapabilitiesContext new NetAllCapabilities(context->capabilities)); } -bool ConnectionExec::ExecGetConnectProperties(GetConnectPropertiesContext *context) +bool ConnectionExec::ExecGetConnectionProperties(GetConnectionPropertiesContext *context) { return DelayedSingleton::GetInstance()->GetConnectionProperties(context->netHandle, context->linkInfo) == 0; } -napi_value ConnectionExec::GetConnectPropertiesCallback(GetConnectPropertiesContext *context) +napi_value ConnectionExec::GetConnectionPropertiesCallback(GetConnectionPropertiesContext *context) { return NetConnCallbackObserver::CreateConnectionProperties(context->GetEnv(), new NetLinkInfo(context->linkInfo)); } diff --git a/frameworks/js/napi/connection/connection_module/src/connection_module.cpp b/frameworks/js/napi/connection/connection_module/src/connection_module.cpp index 921ff9f7c..e5fee6102 100644 --- a/frameworks/js/napi/connection/connection_module/src/connection_module.cpp +++ b/frameworks/js/napi/connection/connection_module/src/connection_module.cpp @@ -146,7 +146,7 @@ napi_value ConnectionModule::HasDefaultNet(napi_env env, napi_callback_info info { return ModuleTemplate::Interface(env, info, FUNCTION_HAS_DEFAULT_NET, nullptr, ConnectionAsyncWork::ExecHasDefaultNet, - ConnectionAsyncWork::GetAddressesByNameCallback); + ConnectionAsyncWork::HasDefaultNetCallback); } napi_value ConnectionModule::GetNetCapabilities(napi_env env, napi_callback_info info) @@ -158,15 +158,16 @@ napi_value ConnectionModule::GetNetCapabilities(napi_env env, napi_callback_info napi_value ConnectionModule::GetConnectionProperties(napi_env env, napi_callback_info info) { - return ModuleTemplate::Interface( - env, info, FUNCTION_GET_CONNECTION_PROPERTIES, nullptr, ConnectionAsyncWork::ExecGetConnectProperties, - ConnectionAsyncWork::GetConnectPropertiesCallback); + return ModuleTemplate::Interface( + env, info, FUNCTION_GET_CONNECTION_PROPERTIES, nullptr, ConnectionAsyncWork::ExecGetConnectionProperties, + ConnectionAsyncWork::GetConnectionPropertiesCallback); } napi_value ConnectionModule::CreateNetConnection(napi_env env, napi_callback_info info) { return ModuleTemplate::NewInstance(env, info, INTERFACE_NET_CONNECTION, ParseNetConnectionParams, [](napi_env, void *data, void *) { + NETMANAGER_BASE_LOGI("finalize netConnection"); auto manager = static_cast(data); auto netConnection = static_cast(manager->GetData()); delete manager; diff --git a/frameworks/js/napi/connection/observer/src/net_conn_callback_observer.cpp b/frameworks/js/napi/connection/observer/src/net_conn_callback_observer.cpp index 6ec204a79..d65563b88 100644 --- a/frameworks/js/napi/connection/observer/src/net_conn_callback_observer.cpp +++ b/frameworks/js/napi/connection/observer/src/net_conn_callback_observer.cpp @@ -26,6 +26,10 @@ int32_t NetConnCallbackObserver::NetAvailable(sptr &netHandle) { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetAvailable"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } netConnection->GetEventManager()->EmitByUv(EVENT_NET_AVAILABLE, new NetHandle(*netHandle), NetAvailableCallback); return 0; } @@ -35,6 +39,10 @@ int32_t NetConnCallbackObserver::NetCapabilitiesChange(sptr &netHandl { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetCapabilitiesChange"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } auto pair = new std::pair; pair->first = new NetHandle(*netHandle); pair->second = new NetAllCapabilities(*netAllCap); @@ -47,6 +55,10 @@ int32_t NetConnCallbackObserver::NetConnectionPropertiesChange(sptr & { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetConnectionPropertiesChange"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } auto pair = new std::pair; pair->first = new NetHandle(*netHandle); pair->second = new NetLinkInfo(*info); @@ -59,6 +71,10 @@ int32_t NetConnCallbackObserver::NetLost(sptr &netHandle) { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetLost"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } netConnection->GetEventManager()->EmitByUv(EVENT_NET_LOST, new NetHandle(*netHandle), NetLostCallback); return 0; } @@ -67,6 +83,10 @@ int32_t NetConnCallbackObserver::NetUnavailable() { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetUnavailable"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } netConnection->GetEventManager()->EmitByUv(EVENT_NET_UNAVAILABLE, nullptr, NetUnavailableCallback); return 0; } @@ -75,6 +95,10 @@ int32_t NetConnCallbackObserver::NetBlockStatusChange(sptr &netHandle { NETMANAGER_BASE_LOGI("NetConnCallbackObserver::NetBlockStatusChange"); NetConnection *netConnection = NET_CONNECTIONS[this]; + if (netConnection == nullptr) { + NETMANAGER_BASE_LOGI("can not find netConnection handle"); + return 0; + } auto pair = new std::pair; pair->first = new NetHandle(*netHandle); pair->second = blocked; -- Gitee