1 /*
2 * Copyright (c) 2024 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 #include "get_traffic_stats_by_network_context.h"
17
18 #include "napi_constant.h"
19 #include "napi_utils.h"
20 #include "netmanager_base_log.h"
21
22 namespace OHOS {
23 namespace NetManagerStandard {
24 namespace {
25 constexpr const char *NET_BEAR_TYPE = "type";
26 constexpr const char *START_TIME = "startTime";
27 constexpr const char *END_TIME = "endTime";
28 constexpr const char *SIM_ID = "simId";
29 } // namespace
30
GetTrafficStatsByNetworkContext(napi_env env,EventManager * manager)31 GetTrafficStatsByNetworkContext::GetTrafficStatsByNetworkContext(napi_env env, EventManager *manager)
32 : BaseContext(env, manager) {}
33
ParseParams(napi_value * params,size_t paramsCount)34 void GetTrafficStatsByNetworkContext::ParseParams(napi_value *params, size_t paramsCount)
35 {
36 if (!CheckParamsType(params, paramsCount)) {
37 NETMANAGER_BASE_LOGE("checkParamsType false");
38 SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
39 SetNeedThrowException(true);
40 return;
41 }
42 if (!CheckNetworkParams(params, paramsCount)) {
43 return;
44 }
45 if (NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_0], NET_BEAR_TYPE) < 0 ||
46 NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_0], START_TIME) < 0 ||
47 NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_0], END_TIME) < 0 ||
48 NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_0], SIM_ID) < 0) {
49 NETMANAGER_BASE_LOGE("checkParamsValue is invalid");
50 SetErrorCode(NETMANAGER_ERR_INVALID_PARAMETER);
51 SetNeedThrowException(true);
52 }
53 netBearType_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_0], NET_BEAR_TYPE);
54 startTime_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_0], START_TIME);
55 endTime_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_0], END_TIME);
56 bool hasSimId = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_0], SIM_ID);
57 if (hasSimId) {
58 simId_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_0], SIM_ID);
59 } else {
60 simId_ = UINT32_MAX;
61 }
62 if (paramsCount == PARAM_OPTIONS_AND_CALLBACK) {
63 SetParseOK(SetCallback(params[ARG_INDEX_1]) == napi_ok);
64 return;
65 }
66 SetParseOK(true);
67 }
68
CheckNetworkParams(napi_value * params,size_t paramsCount)69 bool GetTrafficStatsByNetworkContext::CheckNetworkParams(napi_value *params, size_t paramsCount)
70 {
71 bool hasNetBearType = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_0], NET_BEAR_TYPE);
72 bool hasStartTime = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_0], START_TIME);
73 bool hasEndTime = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_0], END_TIME);
74 bool hasSimId = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_0], SIM_ID);
75 if (!(hasNetBearType && hasStartTime && hasEndTime)) {
76 NETMANAGER_BASE_LOGE("param error hasNetBearType=%{public}d, hasStartTime=%{public}d, hasEndTime=%{public}d",
77 hasNetBearType, hasStartTime, hasEndTime);
78 SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
79 SetNeedThrowException(true);
80 return false;
81 }
82 bool checkNetBearType = NapiUtils::GetValueType(
83 GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_0], NET_BEAR_TYPE)) == napi_number;
84 bool checkStartTime = NapiUtils::GetValueType(
85 GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_0], START_TIME)) == napi_number;
86 bool checkEndTime = NapiUtils::GetValueType(
87 GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_0], END_TIME)) == napi_number;
88 bool checkSimId = true;
89 if (hasSimId) {
90 checkSimId = NapiUtils::GetValueType(
91 GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_0], SIM_ID)) == napi_number;
92 }
93 if (!(checkNetBearType && checkStartTime && checkEndTime && checkSimId)) {
94 NETMANAGER_BASE_LOGE(
95 "param check checkType=%{public}d, checkStartTime=%{public}d, checkEndTime=%{public}d, "
96 "checkSimId=%{public}d",
97 checkNetBearType, checkStartTime, checkEndTime, checkSimId);
98 SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
99 SetNeedThrowException(true);
100 return false;
101 }
102 return true;
103 }
104
CheckParamsType(napi_value * params,size_t paramsCount)105 bool GetTrafficStatsByNetworkContext::CheckParamsType(napi_value *params, size_t paramsCount)
106 {
107 if (paramsCount == PARAM_JUST_OPTIONS) {
108 return NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_0]) == napi_object;
109 }
110
111 if (paramsCount == PARAM_OPTIONS_AND_CALLBACK) {
112 return NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_0]) == napi_object &&
113 NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_1]) == napi_function;
114 }
115 return false;
116 }
117
SetNetBearType(uint32_t bearerType)118 void GetTrafficStatsByNetworkContext::SetNetBearType(uint32_t bearerType)
119 {
120 netBearType_ = bearerType;
121 }
122
SetStartTime(uint32_t startTime)123 void GetTrafficStatsByNetworkContext::SetStartTime(uint32_t startTime)
124 {
125 startTime_ = startTime;
126 }
127
SetEndTime(uint32_t endTime)128 void GetTrafficStatsByNetworkContext::SetEndTime(uint32_t endTime)
129 {
130 endTime_ = endTime;
131 }
132
SetSimId(uint32_t simId)133 void GetTrafficStatsByNetworkContext::SetSimId(uint32_t simId)
134 {
135 simId_ = simId;
136 }
137
GetNetBearType() const138 uint32_t GetTrafficStatsByNetworkContext::GetNetBearType() const
139 {
140 return netBearType_;
141 }
142
GetStartTime() const143 uint32_t GetTrafficStatsByNetworkContext::GetStartTime() const
144 {
145 return startTime_;
146 }
147
GetEndTime() const148 uint32_t GetTrafficStatsByNetworkContext::GetEndTime() const
149 {
150 return endTime_;
151 }
152
GetSimId() const153 uint32_t GetTrafficStatsByNetworkContext::GetSimId() const
154 {
155 return simId_;
156 }
157
GetNetStatsInfo()158 std::unordered_map<uint32_t, NetStatsInfo> &GetTrafficStatsByNetworkContext::GetNetStatsInfo()
159 {
160 return stats_;
161 }
162
163 } // namespace NetManagerStandard
164 } // namespace OHOS