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 #ifndef DATASHARE_RADAR_REPORTER_H 17 #define DATASHARE_RADAR_REPORTER_H 18 19 #include "hisysevent.h" 20 21 namespace OHOS { 22 namespace DataShare { 23 namespace RadarReporter { 24 using namespace OHOS::HiviewDFX; 25 static constexpr int DISTRIBUTEDDATA_ID = 0xd; 26 static constexpr int DATA_SHARE_ID = 5; 27 enum BizScene { 28 CREATE_DATASHARE_HELPER = 1, 29 SILENT_ACCESS = 2, 30 OBSERVER_MANAGER = 3, 31 NOTIFY_OBSERVER_DATA_CHANGE = 4, 32 TEMPLATE_DATA_MANAGER = 5, 33 TEMPLATE_DATA_CHANGE = 6, 34 }; 35 36 enum CreateDataShareHelperStage { 37 CREATE_HELPER = 1, 38 DISTRIBUTEDDATA_START = 2, 39 CONNECT_EXT = 3, 40 DIS_CONNECT_EXT = 4, 41 }; 42 43 enum SilentAccessStage { 44 EXT_REQUEST = 1, 45 GET_BMS = 2, 46 PROXY_GET_SUPPLIER = 3, 47 PROXY_PERMISSION = 4, 48 PROXY_MATEDATA_EXISTS = 5, 49 PROXY_CONNECT_EXT = 6, 50 PROXY_CALL_RDB = 7, 51 }; 52 53 enum ObserverManagerStage { 54 REGISTER_OBSERVER = 1, 55 UNREGISTER_OBSERVER = 2, 56 }; 57 58 enum NotifyObserverDataChangeStage { 59 NOTIFY_DATA_CHANGE = 1, 60 }; 61 62 enum TemplateDataManagerStage { 63 SUBSCRIBE_PUBLISHED_DATA = 1, 64 SUBSCRIBE_RDB_DATA = 2, 65 UNSUBSCRIBE_PUBLISHED_DATA = 3, 66 UNSUBSCRIBE_RDB_DATA = 4, 67 ADD_TEMPLATE = 5, 68 DELETE_TEMPLATE = 6, 69 }; 70 71 enum TemplateDataChangeStage { 72 PUBLISHED_DATA_CHANGE = 1, 73 RDB_DATA_CHANGE = 2, 74 }; 75 76 enum StageRes { 77 IDLE = 0, 78 SUCCESS = 1, 79 FAILED = 2, 80 CANCELLED = 3, 81 }; 82 83 enum BizState { 84 START = 1, 85 FINISHED = 2, 86 }; 87 88 enum ErrorCode { 89 CONNECT_EXTENSION_ERROR = (DISTRIBUTEDDATA_ID << 21) | (DATA_SHARE_ID << 16), 90 CREATE_HELPER_ERROR, 91 CREATE_SHARE_BLOCK_ERROR, 92 SHARE_BLOCK_FULL, 93 DISTRIBUTEDDATA_NOT_START, 94 EXT_CONNECT_TIMEOUT_ERROR, 95 EXT_DIS_CONNECT_ERROR, 96 GET_BMS_FAILED, 97 SUPPLIER_ERROR, 98 URI_ERROR, 99 PERMISSION_DENIED_ERROR, 100 GET_RDB_STORE_ERROR, 101 META_DATA_NOT_EXISTS, 102 EMPTY_OBSERVER_ERROR, 103 NOTIFY_ERROR, 104 DATA_OBS_EMPTY_ERROR, 105 SILENT_PROXY_DISABLE, 106 ADD_TEMPLATE_ERROR, 107 NOT_SUBCRIBE_ERROR, 108 CREATE_DELEGATE_ERROR, 109 INSERT_RDB_ERROR, 110 QUERY_RDB_ERROR, 111 DELETE_RDB_ERROR, 112 UPDATE_RDB_ERROR, 113 GET_BUNDLE_INFP_FAILED, 114 EMPTY_PARAM_ERROR, 115 INVALID_PARAM_ERROR, 116 DATA_SHARE_DIED_ERROR, 117 }; 118 119 static constexpr char DOMAIN[] = "DISTDATAMGR"; 120 constexpr const char* EVENT_NAME = "DISTRIBUTED_DATA_SHARE_BEHAVIOR"; 121 constexpr const char* ORG_PKG = "distributeddata"; 122 constexpr const char* BIZ_STATE = "BIZ_STATE"; 123 constexpr const char* ERROR_CODE = "ERROR_CODE"; 124 constexpr const char* LOCAL_SESS_NAME = "LOCAL_SESS_NAME"; 125 constexpr const char* PEER_SESS_NAME = "PEER_SESS_NAME"; 126 127 static constexpr HiviewDFX::HiSysEvent::EventType TYPE = HiviewDFX::HiSysEvent::EventType::BEHAVIOR; 128 129 #define RADAR_REPORT(funcName, bizScene, bizStage, stageRes, ...) \ 130 ({ \ 131 HiSysEventWrite(RadarReporter::DOMAIN, RadarReporter::EVENT_NAME, RadarReporter::TYPE, \ 132 "ORG_PKG", RadarReporter::ORG_PKG, "FUNC", funcName, \ 133 "BIZ_SCENE", bizScene, "BIZ_STAGE", bizStage, "STAGE_RES", stageRes, \ 134 ##__VA_ARGS__); \ 135 }) 136 137 class RadarReport final { 138 public: RadarReport(int32_t bizScene,int32_t bizStage,const std::string funcName)139 RadarReport(int32_t bizScene, int32_t bizStage, const std::string funcName) 140 { 141 RADAR_REPORT(funcName, bizScene, bizStage, RadarReporter::SUCCESS, 142 RadarReporter::BIZ_STATE, RadarReporter::START); 143 bizScene_ = bizScene; 144 bizStage_ = bizStage; 145 funcName_ = funcName; 146 } 147 ~RadarReport()148 ~RadarReport() 149 { 150 if (errorCode_ != 0) { 151 RADAR_REPORT(funcName_, bizScene_, bizStage_, RadarReporter::FAILED, RadarReporter::BIZ_STATE, 152 RadarReporter::FINISHED, RadarReporter::ERROR_CODE, errorCode_); 153 } else { 154 RADAR_REPORT(funcName_, bizScene_, bizStage_, RadarReporter::SUCCESS, 155 RadarReporter::BIZ_STATE, RadarReporter::FINISHED); 156 } 157 } 158 SetError(int32_t errorCode)159 void SetError(int32_t errorCode) 160 { 161 errorCode_ = errorCode; 162 } 163 private: 164 int32_t bizScene_; 165 int32_t bizStage_; 166 int32_t errorCode_ = 0; 167 std::string funcName_; 168 }; 169 } // namespace RadarReporter 170 } // namespace DataShare 171 } // namespace OHOS 172 #endif // DATASHARE_RADAR_REPORTER_H