• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_uid_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 
GetTrafficStatsByUidNetworkContext(napi_env env,std::shared_ptr<EventManager> & manager)31 GetTrafficStatsByUidNetworkContext::GetTrafficStatsByUidNetworkContext(napi_env env,
32     std::shared_ptr<EventManager>& manager)
33     : BaseContext(env, manager) {}
34 
ParseParams(napi_value * params,size_t paramsCount)35 void GetTrafficStatsByUidNetworkContext::ParseParams(napi_value *params, size_t paramsCount)
36 {
37     if (!CheckParamsType(params, paramsCount)) {
38         NETMANAGER_BASE_LOGE("checkParamsType false");
39         SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
40         SetNeedThrowException(true);
41         return;
42     }
43     uid_ = NapiUtils::GetUint32FromValue(GetEnv(), params[ARG_INDEX_0]);
44     if (uid_ <= 0) {
45         NETMANAGER_BASE_LOGE("uid invalid");
46         SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
47         SetNeedThrowException(true);
48         return;
49     }
50     if (!CheckNetworkParams(params, paramsCount)) {
51         return;
52     }
53     if (NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_1], NET_BEAR_TYPE) < 0 ||
54         NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_1], START_TIME) < 0 ||
55         NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_1], END_TIME) < 0 ||
56         NapiUtils::GetInt32Property(GetEnv(), params[ARG_INDEX_1], SIM_ID) < 0) {
57         NETMANAGER_BASE_LOGE("checkParamsValue is invalid");
58         SetErrorCode(NETMANAGER_ERR_INVALID_PARAMETER);
59         SetNeedThrowException(true);
60     }
61     netBearType_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_1], NET_BEAR_TYPE);
62     startTime_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_1], START_TIME);
63     endTime_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_1], END_TIME);
64     bool hasSimId = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_1], SIM_ID);
65     if (hasSimId) {
66         simId_ = NapiUtils::GetUint32Property(GetEnv(), params[ARG_INDEX_1], SIM_ID);
67     } else {
68         simId_ = UINT32_MAX;
69     }
70     if (paramsCount == PARAM_DOUBLE_OPTIONS_AND_CALLBACK) {
71         SetParseOK(SetCallback(params[ARG_INDEX_2]) == napi_ok);
72         return;
73     }
74     SetParseOK(true);
75 }
76 
CheckNetworkParams(napi_value * params,size_t paramsCount)77 bool GetTrafficStatsByUidNetworkContext::CheckNetworkParams(napi_value *params, size_t paramsCount)
78 {
79     bool hasNetBearType = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_1], NET_BEAR_TYPE);
80     bool hasStartTime = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_1], START_TIME);
81     bool hasEndTime = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_1], END_TIME);
82     bool hasSimId = NapiUtils::HasNamedProperty(GetEnv(), params[ARG_INDEX_1], SIM_ID);
83     if (!(hasNetBearType && hasStartTime && hasEndTime)) {
84         NETMANAGER_BASE_LOGE("param error hasNetBearType=%{public}d, hasStartTime=%{public}d, hasEndTime=%{public}d",
85                              hasNetBearType, hasStartTime, hasEndTime);
86         SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
87         SetNeedThrowException(true);
88         return false;
89     }
90     bool checkNetBearType = NapiUtils::GetValueType(
91         GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_1], NET_BEAR_TYPE)) == napi_number;
92     bool checkStartTime = NapiUtils::GetValueType(
93         GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_1], START_TIME)) == napi_number;
94     bool checkEndTime = NapiUtils::GetValueType(
95         GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_1], END_TIME)) == napi_number;
96     bool checkSimId = true;
97     if (hasSimId) {
98         checkSimId = NapiUtils::GetValueType(
99             GetEnv(), NapiUtils::GetNamedProperty(GetEnv(), params[ARG_INDEX_1], SIM_ID)) == napi_number;
100     }
101     if (!(checkNetBearType && checkStartTime && checkEndTime && checkSimId)) {
102         NETMANAGER_BASE_LOGE(
103             "param check checkType=%{public}d, checkStartTime=%{public}d, checkEndTime=%{public}d, "
104             "checkSimId=%{public}d",
105             checkNetBearType, checkStartTime, checkEndTime, checkSimId);
106         SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR);
107         SetNeedThrowException(true);
108         return false;
109     }
110     return true;
111 }
112 
CheckParamsType(napi_value * params,size_t paramsCount)113 bool GetTrafficStatsByUidNetworkContext::CheckParamsType(napi_value *params, size_t paramsCount)
114 {
115     if (paramsCount == PARAM_DOUBLE_OPTIONS) {
116         return NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_0]) == napi_number &&
117                NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_1]) == napi_object;
118     }
119     if (paramsCount == PARAM_DOUBLE_OPTIONS_AND_CALLBACK) {
120         return NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_0]) == napi_number &&
121                NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_1]) == napi_object &&
122                NapiUtils::GetValueType(GetEnv(), params[ARG_INDEX_2]) == napi_function;
123     }
124     return false;
125 }
126 
SetUid(uint32_t uid)127 void GetTrafficStatsByUidNetworkContext::SetUid(uint32_t uid)
128 {
129     uid_ = uid;
130 }
131 
SetNetBearType(uint32_t bearerType)132 void GetTrafficStatsByUidNetworkContext::SetNetBearType(uint32_t bearerType)
133 {
134     netBearType_ = bearerType;
135 }
136 
SetStartTime(uint32_t startTime)137 void GetTrafficStatsByUidNetworkContext::SetStartTime(uint32_t startTime)
138 {
139     startTime_ = startTime;
140 }
141 
SetEndTime(uint32_t endTime)142 void GetTrafficStatsByUidNetworkContext::SetEndTime(uint32_t endTime)
143 {
144     endTime_ = endTime;
145 }
146 
SetSimId(uint32_t simId)147 void GetTrafficStatsByUidNetworkContext::SetSimId(uint32_t simId)
148 {
149     simId_ = simId;
150 }
151 
GetUid() const152 uint32_t GetTrafficStatsByUidNetworkContext::GetUid() const
153 {
154     return uid_;
155 }
156 
GetNetBearType() const157 uint32_t GetTrafficStatsByUidNetworkContext::GetNetBearType() const
158 {
159     return netBearType_;
160 }
161 
GetStartTime() const162 uint32_t GetTrafficStatsByUidNetworkContext::GetStartTime() const
163 {
164     return startTime_;
165 }
166 
GetEndTime() const167 uint32_t GetTrafficStatsByUidNetworkContext::GetEndTime() const
168 {
169     return endTime_;
170 }
171 
GetSimId() const172 uint32_t GetTrafficStatsByUidNetworkContext::GetSimId() const
173 {
174     return simId_;
175 }
176 
GetNetStatsInfoSequence()177 std::vector<NetStatsInfoSequence> &GetTrafficStatsByUidNetworkContext::GetNetStatsInfoSequence()
178 {
179     return stats_;
180 }
181 
182 } // namespace NetManagerStandard
183 } // namespace OHOS