• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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