11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2024 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 NETSTACK_INCLUDE_HISYSEVENT_H 171e934351Sopenharmony_ci#define NETSTACK_INCLUDE_HISYSEVENT_H 181e934351Sopenharmony_ci 191e934351Sopenharmony_ci#include <string> 201e934351Sopenharmony_ci#include <map> 211e934351Sopenharmony_ci#include <mutex> 221e934351Sopenharmony_ci 231e934351Sopenharmony_ci#include "curl/curl.h" 241e934351Sopenharmony_ci 251e934351Sopenharmony_cinamespace OHOS::NetStack { 261e934351Sopenharmony_ci 271e934351Sopenharmony_cistruct EventInfo { 281e934351Sopenharmony_ci std::string packageName; 291e934351Sopenharmony_ci double totalTime; 301e934351Sopenharmony_ci double totalRate; 311e934351Sopenharmony_ci double totalDnsTime; 321e934351Sopenharmony_ci double totalTlsTime; 331e934351Sopenharmony_ci double totalTcpTime; 341e934351Sopenharmony_ci double totalFirstRecvTime; 351e934351Sopenharmony_ci uint32_t successCount; 361e934351Sopenharmony_ci uint32_t totalCount; 371e934351Sopenharmony_ci std::string version; 381e934351Sopenharmony_ci}; 391e934351Sopenharmony_ci 401e934351Sopenharmony_cistruct HttpPerfInfo { 411e934351Sopenharmony_ci double totalTime; 421e934351Sopenharmony_ci double dnsTime; 431e934351Sopenharmony_ci double tlsTime; 441e934351Sopenharmony_ci double firstRecvTime; 451e934351Sopenharmony_ci double tcpTime; 461e934351Sopenharmony_ci curl_off_t size; 471e934351Sopenharmony_ci int64_t responseCode; 481e934351Sopenharmony_ci std::string version; 491e934351Sopenharmony_cipublic: 501e934351Sopenharmony_ci bool IsSuccess() const; 511e934351Sopenharmony_ci}; 521e934351Sopenharmony_ci 531e934351Sopenharmony_ciclass EventReport { 541e934351Sopenharmony_cipublic: 551e934351Sopenharmony_ci void ProcessHttpPerfHiSysevent(const HttpPerfInfo &httpPerfInfo); 561e934351Sopenharmony_ci void SendHttpPerfEvent(const EventInfo &eventInfo); 571e934351Sopenharmony_ci static EventReport &GetInstance(); 581e934351Sopenharmony_ci bool IsValid(); 591e934351Sopenharmony_ci 601e934351Sopenharmony_ciprivate: 611e934351Sopenharmony_ci EventReport(); 621e934351Sopenharmony_ci ~EventReport() = default; 631e934351Sopenharmony_ci EventReport(const EventReport &eventReport) = delete; 641e934351Sopenharmony_ci const EventReport &operator=(const EventReport &eventReport) = delete; 651e934351Sopenharmony_ci void InitPackageName(); 661e934351Sopenharmony_ci void ResetCounters(); 671e934351Sopenharmony_ci std::string GetPackageName(); 681e934351Sopenharmony_ci std::string MapToJsonString(const std::map<std::string, uint32_t> mapPara); 691e934351Sopenharmony_ci 701e934351Sopenharmony_ciprivate: 711e934351Sopenharmony_ci time_t reportTime = 0; 721e934351Sopenharmony_ci std::string packageName_; 731e934351Sopenharmony_ci EventInfo eventInfo; 741e934351Sopenharmony_ci std::map<std::string, uint32_t> versionMap; 751e934351Sopenharmony_ci bool validFlag = true; 761e934351Sopenharmony_ci std::recursive_mutex mutex; 771e934351Sopenharmony_ci}; 781e934351Sopenharmony_ci} 791e934351Sopenharmony_ci#endif