11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#ifndef COMMUNICATIONNETSTACK_BASE_CONTEXT_H 171e934351Sopenharmony_ci#define COMMUNICATIONNETSTACK_BASE_CONTEXT_H 181e934351Sopenharmony_ci 191e934351Sopenharmony_ci#include <cstddef> 201e934351Sopenharmony_ci#include <cstdint> 211e934351Sopenharmony_ci#include <iosfwd> 221e934351Sopenharmony_ci#include <string> 231e934351Sopenharmony_ci#include <utility> 241e934351Sopenharmony_ci 251e934351Sopenharmony_ci#include <napi/native_api.h> 261e934351Sopenharmony_ci#include <napi/native_common.h> 271e934351Sopenharmony_ci 281e934351Sopenharmony_ci#include "event_manager.h" 291e934351Sopenharmony_ci#include "node_api_types.h" 301e934351Sopenharmony_ci 311e934351Sopenharmony_cinamespace OHOS::NetStack { 321e934351Sopenharmony_citypedef void (*AsyncWorkExecutor)(napi_env env, void *data); 331e934351Sopenharmony_citypedef void (*AsyncWorkCallback)(napi_env env, napi_status status, void *data); 341e934351Sopenharmony_cistatic constexpr size_t PERMISSION_DENIED_CODE = 201; 351e934351Sopenharmony_cistatic constexpr const char *PERMISSION_DENIED_MSG = "Permission denied"; 361e934351Sopenharmony_cistatic constexpr size_t PARSE_ERROR_CODE = 401; 371e934351Sopenharmony_cistatic constexpr const char *PARSE_ERROR_MSG = "Parameter error"; 381e934351Sopenharmony_ci 391e934351Sopenharmony_ciclass BaseContext { 401e934351Sopenharmony_cipublic: 411e934351Sopenharmony_ci BaseContext() = delete; 421e934351Sopenharmony_ci 431e934351Sopenharmony_ci BaseContext(napi_env env, EventManager *manager); 441e934351Sopenharmony_ci 451e934351Sopenharmony_ci BaseContext(napi_env env, const std::shared_ptr<EventManager> &sharedManager); 461e934351Sopenharmony_ci 471e934351Sopenharmony_ci virtual ~BaseContext(); 481e934351Sopenharmony_ci 491e934351Sopenharmony_ci void SetParseOK(bool parseOK); 501e934351Sopenharmony_ci 511e934351Sopenharmony_ci void SetExecOK(bool requestOK); 521e934351Sopenharmony_ci 531e934351Sopenharmony_ci void SetErrorCode(int32_t errorCode); 541e934351Sopenharmony_ci 551e934351Sopenharmony_ci void SetError(int32_t errorCode, const std::string &errorMessage); 561e934351Sopenharmony_ci 571e934351Sopenharmony_ci napi_status SetCallback(napi_value callback); 581e934351Sopenharmony_ci 591e934351Sopenharmony_ci void DeleteCallback(); 601e934351Sopenharmony_ci 611e934351Sopenharmony_ci void CreateAsyncWork(const std::string &name, AsyncWorkExecutor executor, AsyncWorkCallback callback); 621e934351Sopenharmony_ci 631e934351Sopenharmony_ci void DeleteAsyncWork(); 641e934351Sopenharmony_ci 651e934351Sopenharmony_ci napi_value CreatePromise(); 661e934351Sopenharmony_ci 671e934351Sopenharmony_ci void DeletePromise(); 681e934351Sopenharmony_ci 691e934351Sopenharmony_ci [[nodiscard]] bool IsParseOK() const; 701e934351Sopenharmony_ci 711e934351Sopenharmony_ci [[nodiscard]] bool IsExecOK() const; 721e934351Sopenharmony_ci 731e934351Sopenharmony_ci [[nodiscard]] napi_env GetEnv() const; 741e934351Sopenharmony_ci 751e934351Sopenharmony_ci [[nodiscard]] virtual int32_t GetErrorCode() const; 761e934351Sopenharmony_ci 771e934351Sopenharmony_ci [[nodiscard]] virtual std::string GetErrorMessage() const; 781e934351Sopenharmony_ci 791e934351Sopenharmony_ci [[nodiscard]] napi_value GetCallback() const; 801e934351Sopenharmony_ci 811e934351Sopenharmony_ci [[nodiscard]] napi_deferred GetDeferred() const; 821e934351Sopenharmony_ci 831e934351Sopenharmony_ci [[nodiscard]] const std::string &GetAsyncWorkName() const; 841e934351Sopenharmony_ci 851e934351Sopenharmony_ci void Emit(const std::string &type, const std::pair<napi_value, napi_value> &argv); 861e934351Sopenharmony_ci 871e934351Sopenharmony_ci void EmitSharedManager(const std::string &type, const std::pair<napi_value, napi_value> &argv); 881e934351Sopenharmony_ci 891e934351Sopenharmony_ci void SetNeedPromise(bool needPromise); 901e934351Sopenharmony_ci 911e934351Sopenharmony_ci [[nodiscard]] bool IsNeedPromise() const; 921e934351Sopenharmony_ci 931e934351Sopenharmony_ci void SetNeedThrowException(bool needThrowException); 941e934351Sopenharmony_ci 951e934351Sopenharmony_ci [[nodiscard]] bool IsNeedThrowException() const; 961e934351Sopenharmony_ci 971e934351Sopenharmony_ci void SetPermissionDenied(bool needThrowException); 981e934351Sopenharmony_ci 991e934351Sopenharmony_ci [[nodiscard]] bool IsPermissionDenied() const; 1001e934351Sopenharmony_ci 1011e934351Sopenharmony_ci void SetNoAllowedHost(bool needThrowException); 1021e934351Sopenharmony_ci 1031e934351Sopenharmony_ci [[nodiscard]] bool IsNoAllowedHost() const; 1041e934351Sopenharmony_ci 1051e934351Sopenharmony_ci [[nodiscard]] EventManager *GetManager() const; 1061e934351Sopenharmony_ci 1071e934351Sopenharmony_ci [[nodiscard]] std::shared_ptr<EventManager> GetSharedManager() const; 1081e934351Sopenharmony_ci 1091e934351Sopenharmony_ci void SetSharedManager(const std::shared_ptr<EventManager> &sharedManager); 1101e934351Sopenharmony_ci 1111e934351Sopenharmony_ci void CreateReference(napi_value value); 1121e934351Sopenharmony_ci 1131e934351Sopenharmony_ci void DeleteReference(); 1141e934351Sopenharmony_ci 1151e934351Sopenharmony_ci napi_async_work GetAsyncWork(); 1161e934351Sopenharmony_ci 1171e934351Sopenharmony_ci virtual void ParseParams(napi_value *params, size_t paramsCount); 1181e934351Sopenharmony_ci 1191e934351Sopenharmony_ci napi_deferred deferredBack1_ = nullptr; 1201e934351Sopenharmony_ci napi_deferred deferredBack2_ = nullptr; 1211e934351Sopenharmony_ci napi_deferred deferredBack3_ = nullptr; 1221e934351Sopenharmony_ci napi_deferred deferredBack4_ = nullptr; 1231e934351Sopenharmony_ci napi_async_work asyncWorkBack1_ = nullptr; 1241e934351Sopenharmony_ci napi_async_work asyncWorkBack2_ = nullptr; 1251e934351Sopenharmony_ci napi_async_work asyncWorkBack3_ = nullptr; 1261e934351Sopenharmony_ci napi_async_work asyncWorkBack4_ = nullptr; 1271e934351Sopenharmony_ci 1281e934351Sopenharmony_ciprotected: 1291e934351Sopenharmony_ci EventManager *manager_ = nullptr; 1301e934351Sopenharmony_ci 1311e934351Sopenharmony_ciprivate: 1321e934351Sopenharmony_ci napi_env env_ = nullptr; 1331e934351Sopenharmony_ci 1341e934351Sopenharmony_ci napi_ref ref_ = nullptr; 1351e934351Sopenharmony_ci 1361e934351Sopenharmony_ci bool parseOK_; 1371e934351Sopenharmony_ci 1381e934351Sopenharmony_ci bool requestOK_; 1391e934351Sopenharmony_ci 1401e934351Sopenharmony_ci int32_t errorCode_; 1411e934351Sopenharmony_ci 1421e934351Sopenharmony_ci napi_ref callback_ = nullptr; 1431e934351Sopenharmony_ci 1441e934351Sopenharmony_ci napi_ref promiseRef_ = nullptr; 1451e934351Sopenharmony_ci 1461e934351Sopenharmony_ci napi_async_work asyncWork_ = nullptr; 1471e934351Sopenharmony_ci 1481e934351Sopenharmony_ci napi_deferred deferred_ = nullptr; 1491e934351Sopenharmony_ci 1501e934351Sopenharmony_ci bool needPromise_; 1511e934351Sopenharmony_ci 1521e934351Sopenharmony_ci bool needThrowException_; 1531e934351Sopenharmony_ci 1541e934351Sopenharmony_ci bool permissionDenied_; 1551e934351Sopenharmony_ci 1561e934351Sopenharmony_ci bool noAllowedHost_; 1571e934351Sopenharmony_ci 1581e934351Sopenharmony_ci std::string asyncWorkName_; 1591e934351Sopenharmony_ci 1601e934351Sopenharmony_ci std::string errorMessage_; 1611e934351Sopenharmony_ci 1621e934351Sopenharmony_ciprotected: 1631e934351Sopenharmony_ci std::shared_ptr<EventManager> sharedManager_; 1641e934351Sopenharmony_ci 1651e934351Sopenharmony_ciprivate: 1661e934351Sopenharmony_ci napi_ref callbackBak1_ = nullptr; 1671e934351Sopenharmony_ci napi_ref callbackBak2_ = nullptr; 1681e934351Sopenharmony_ci napi_ref callbackBak3_ = nullptr; 1691e934351Sopenharmony_ci napi_ref callbackBak4_ = nullptr; 1701e934351Sopenharmony_ci}; 1711e934351Sopenharmony_ci} // namespace OHOS::NetStack 1721e934351Sopenharmony_ci 1731e934351Sopenharmony_ci#endif /* COMMUNICATIONNETSTACK_BASE_CONTEXT_H */ 174