1 /* 2 * Copyright (C) 2023 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 #ifndef POST_EVENT_UTILS_H 16 #define POST_EVENT_UTILS_H 17 #include <map> 18 #include <string> 19 #include <variant> 20 #include <list> 21 #include <set> 22 23 #include "singleton.h" 24 namespace OHOS { 25 namespace Media { 26 #define COMPILE_HIDDEN __attribute__ ((visibility ("hidden"))) 27 struct SyncEventStat { 28 int64_t startDownloadTime; 29 int64_t endDownloadTime; 30 int32_t downloadType; 31 int32_t totalPhotoCount; 32 int32_t totalAlbumNum; 33 int32_t addAlbumNum; 34 int32_t updateAlbumNum; 35 int32_t deleteAlbumNum; 36 int32_t totalAssetNum; 37 int32_t addAssetNum; 38 int32_t updateAssetNum; 39 int32_t deleteAssetNum; 40 int32_t avgRefreshImageVideoAlbumTime; 41 int32_t refreshUserAndSourceAlbumCount; 42 int32_t avgRefreshUserAndSourceAlbumTime; 43 int32_t refreshAnalysisAlbumCount; 44 int32_t avgRefreshAnalysisAlbumTime; 45 }; 46 47 const std::string KEY_OPT_TYPE = "optType"; 48 49 const std::string KEY_ERR_FILE = "errFile"; 50 const std::string KEY_ERR_LINE = "errLine"; 51 const std::string KEY_ERR_CODE = "errCode"; 52 const std::string KEY_OPT_FILE = "optFile"; 53 54 const std::string KEY_GNUMS = "gnums"; 55 const std::string KEY_ANUMS = "anums"; 56 57 const std::string KEY_PRE_VERSION = "preVersion"; 58 const std::string KEY_AFTER_VERSION = "afterVersion"; 59 60 const std::string KEY_COUNT = "count"; 61 62 const std::string KEY_TIME_INTERVAL = "TIME_INTERVAL"; 63 64 const std::string KEY_CALLING_PACKAGE = "CALLING_PACKAGE"; 65 const std::string KEY_HIGH_QUALITY_COUNT = "HIGH_QUALITY_COUNT"; 66 const std::string KEY_BALANCE_QUALITY_COUNT = "BALANCE_QUALITY_COUNT"; 67 const std::string KEY_EMERGENCY_QUALITY_COUNT = "EMERGENCY_QUALITY_COUNT"; 68 69 const std::string KEY_THIRD_PART_COUNT = "THIRD_PART_COUNT"; 70 const std::string KEY_AUTO_COUNT = "AUTO_COUNT"; 71 72 const std::string KEY_PHOTO_ID = "PHOTO_ID"; 73 const std::string KEY_TOTAL_TIME_COST = "TOTAL_TIME_COST"; 74 75 const std::string KEY_RESULT = "RESULT"; 76 const std::string KEY_MEDIA_TYPE = "MEDIA_TYPE"; 77 78 const std::string KEY_CLOUD_ENHANCEMENT_COMPLETE_TYPE = "COMPLETE_TYPE"; 79 const std::string KEY_CLOUD_ENHANCEMENT_FINISH_TYPE = "FINISH_TYPE"; 80 81 const std::string KEY_DB_CORRUPT = "DB_CORRUPT_DATE"; 82 83 namespace { 84 const char* KEY_START_DOWNLOAD_TIME = "START_DOWNLOAD_T"; 85 const char* KEY_END_DOWNLOAD_TIME = "END_DOWNLOAD_T"; 86 const char* KEY_DOWNLOAD_TYPE = "DOWNLOAD_TYPE"; 87 const char* KEY_TOTAL_PHOTO_COUNT = "TOTAL_PHOTO_C"; 88 89 const char* KEY_TOTAL_ALBUM_NUM = "TOTAL_ALBUM_NUM"; 90 const char* KEY_ADD_ALBUM_NUM = "ADD_ALBUM_NUM"; 91 const char* KEY_UPDATE_ALBUM_NUM = "UPDATE_ALBUM_NUM"; 92 const char* KEY_DELETE_ALBUM_NUM = "DELETE_ALBUM_NUM"; 93 const char* KEY_TOTAL_ASSET_NUM = "TOTAL_ASSET_NUM"; 94 const char* KEY_ADD_ASSET_NUM = "ADD_ASSET_NUM"; 95 const char* KEY_UPDATE_ASSET_NUM = "UPDATE_ASSET_NUM"; 96 const char* KEY_DELETE_ASSET_NUM = "DELETE_ASSET_NUM"; 97 98 const char* KEY_REFRESH_IMAGEVIDEO_ALBUM_TOTAL_COUNT = "REF_IMAGEVIDEO_ALBUM_C"; 99 const char* KEY_REFRESH_IMAGEVIDEO_ALBUM_TOTAL_TIME = "REF_IMAGEVIDEO_ALBUM_T"; 100 const char* KEY_AVG_REFRESH_IMAGEVIDEO_ALBUM_TIME = "AVG_REF_IMAGEVIDEO_ALBUM_T"; 101 102 const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_COUNT = "REF_USERSOURCE_ALBUM_C"; 103 const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_TOTAL_COUNT = "REF_USERSOURCE_ALBUM_TOTAL_C"; 104 const char* KEY_REFRESH_USER_AND_SOURCE_ALBUM_TOTAL_TIME = "REF_USERSOURCE_ALBUM_TOTAL_T"; 105 const char* KEY_AVG_REFRESH_USER_AND_SOURCE_ALBUM_TIME = "AVG_REF_USERSOURCE_ALBUM_T"; 106 107 const char* KEY_REFRESH_ANALYSIS_ALBUM_COUNT = "REF_ANALYSIS_ALBUM_C"; 108 const char* KEY_REFRESH_ANALYSIS_ALBUM_TOTAL_COUNT = "REF_ANALYSIS_ALBUM_TOTAL_C"; 109 const char* KEY_REFRESH_ANALYSIS_ALBUM_TOTAL_TIME = "REF_ANALYSIS_ALBUM_TOTAL_T"; 110 const char* KEY_AVG_REFRESH_ANALYSIS_ALBUM_TIME = "AVG_REF_ANALYSIS_ALBUM_T"; 111 } 112 113 enum OptType { 114 CREATE = 0, 115 THUMB, 116 SCAN, 117 QUERY, 118 }; 119 120 enum ErrType { 121 DEFAULT_ERR = 0, 122 FILE_OPT_ERR, 123 DB_OPT_ERR, 124 DB_UPGRADE_ERR, 125 DB_CORRUPT_ERR, 126 RECOVERY_ERR, 127 }; 128 129 enum StatType { 130 DEFAULT_STAT = 0, 131 THUMBNAIL_STAT, 132 DB_UPGRADE_STAT, 133 SYNC_STAT, 134 AGING_STAT, 135 MSC_FIRST_VISIT_STAT, 136 MSC_REQUEST_POLICY_STAT, 137 MSC_TRIGGER_RATIO_STAT, 138 MSC_TOTAL_TIME_COST_STAT, 139 MSC_RESULT_STAT, 140 CLOUD_ENHANCEMENT_GET_COUNT_STAT, 141 }; 142 using VariantMap = std::map<std::string, std::variant<int32_t, int64_t, std::string>>; 143 144 class PostEventUtils : public Singleton<PostEventUtils> { 145 public: 146 void PostErrorProcess(const uint32_t &errType, const VariantMap &error); 147 void PostStatProcess(const uint32_t &statType, const VariantMap &stat); 148 void CreateCloudDownloadSyncStat(std::string& syncId); 149 void UpdateCloudDownloadSyncStat(VariantMap& syncStat); 150 void PostCloudDownloadSyncStat(std::string& syncId); 151 152 private: 153 COMPILE_HIDDEN std::string GetOptType(const uint32_t &optType); 154 COMPILE_HIDDEN void PostFileOptError(const VariantMap &errMap); 155 COMPILE_HIDDEN void PostRecoveryOptError(const VariantMap &error); 156 COMPILE_HIDDEN void PostDbOptError(const VariantMap &errMap); 157 COMPILE_HIDDEN void PostDbUpgradeError(const VariantMap &errMap); 158 COMPILE_HIDDEN void PostThumbnailStat(const VariantMap &stat); 159 COMPILE_HIDDEN void PostDbUpgradeStat(const VariantMap &stat); 160 COMPILE_HIDDEN void PostSyncStat(); 161 COMPILE_HIDDEN void PostAgingStat(const VariantMap &stat); 162 COMPILE_HIDDEN void PostMscFirstVisitStat(const VariantMap &stat); 163 COMPILE_HIDDEN void PostMscRequestPolicyStat(const VariantMap &stat); 164 COMPILE_HIDDEN void PostMscTriggerRatioStat(const VariantMap &stat); 165 COMPILE_HIDDEN void PostMscTotalTimeCostStat(const VariantMap &stat); 166 COMPILE_HIDDEN void PostMscResultStat(const VariantMap &stat); 167 COMPILE_HIDDEN void PostCloudEnhanceStat(const VariantMap &stat); 168 COMPILE_HIDDEN void PostDatabaseCorruption(const VariantMap &errMap); 169 170 COMPILE_HIDDEN int GetIntValue(const std::string &key, const VariantMap &map); 171 COMPILE_HIDDEN int64_t GetInt64Value(const std::string &key, const VariantMap &map); 172 COMPILE_HIDDEN std::string GetStringValue(const std::string &key, const VariantMap &map); 173 COMPILE_HIDDEN SyncEventStat GetSyncEventStat(const VariantMap &stat); 174 175 COMPILE_HIDDEN uint32_t thumbnailTimes_ = 0; 176 COMPILE_HIDDEN uint32_t dbUpgradeTimes_ = 0; 177 COMPILE_HIDDEN uint32_t syncTimes_ = 0; 178 COMPILE_HIDDEN uint32_t recycleTimes_ = 0; 179 std::mutex cloudDownloadSyncStatMutex_; 180 std::string currentSyncId_; 181 std::list<int32_t> analysis_alunm_count_; 182 std::list<int32_t> user_alubm_count_; 183 COMPILE_HIDDEN VariantMap cloudDownloadSyncStat_; 184 }; 185 } // namespace Media 186 } // namespace OHOS 187 #endif