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 #define MLOG_TAG "DfxTimer"
16
17 #include "dfx_timer.h"
18
19 #include "media_file_utils.h"
20 #include "media_log.h"
21 #include "dfx_manager.h"
22 #include "medialibrary_bundle_manager.h"
23 #include "permission_utils.h"
24 #include "cloud_media_operation_code.h"
25
26 namespace OHOS {
27 namespace Media {
28
29 const std::map<uint32_t, int64_t> DfxTimer::operationCodeTimeoutMap = {
30 // CloudMediaOperationCode
31 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_UPDATE_DIRTY_FOR_CLOUD_CHECK), 200},
32 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_UPDATE_POSITION_FOR_CLOUD_CHECK), 200},
33 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_UPDATE_THM_STATUS_FOR_CLOUD_CHECK), 200},
34 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_DOWNLOAD_ASSET), 200},
35 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_DOWNLOAD_THM), 200},
36 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_VIDEO_TO_CACHE), 200},
37 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_FILE_POS_STAT), 200},
38 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_CLOUD_THM_STAT), 200},
39 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_DIRTY_TYPE_STAT), 200},
40 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_AGING_ASSET), 200},
41 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_ACTIVE_AGING_ASSET), 200},
42 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_ON_DOWNLOAD_ASSET), 200},
43 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_ON_DOWNLOAD_THMS), 200},
44 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_DOWNLOAD_THM_NUM), 200},
45 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_UPDATE_LOCAL_FILE_DIRTY), 200},
46 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_DOWNLOAD_THM_BY_URI), 200},
47 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_UPDATE_SYNC_STATUS), 200},
48 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_GET_CLOUD_SYNC_UNPREPARED_DATA), 200},
49 {static_cast<uint32_t>(CloudSync::CloudMediaOperationCode::CMD_SUBMIT_CLOUD_SYNC_UNPREPARED_DATA_TASK), 200},
50 // CloudMediaPhotoOperationCode
51 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_FETCH_RECORDS), 200},
52 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_DENTRY_FILE_INSERT), 200},
53 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_CREATED_RECORDS), 200},
54 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_META_MODIFIED_RECORDS), 200},
55 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_FILE_MODIFIED_RECORDS), 200},
56 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_DELETED_RECORDS), 200},
57 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_COPY_RECORDS), 200},
58 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_CHECK_RECORDS), 200},
59 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_CREATE_RECORDS), 200},
60 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_MDIRTY_RECORDS), 200},
61 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_FDIRTY_RECORDS), 200},
62 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_DELETE_RECORDS), 200},
63 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_COPY_RECORDS), 200},
64 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_GET_RETRY_RECORDS), 200},
65 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_START_SYNC), 200},
66 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_COMPLETE_SYNC), 200},
67 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_COMPLETE_PULL), 200},
68 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_COMPLETE_PUSH), 200},
69 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_ON_COMPLETE_CHECK), 200},
70 {static_cast<uint32_t>(CloudSync::CloudMediaPhotoOperationCode::CMD_REPORT_FAILURE), 200},
71 // CloudMediaAlbumOperationCode
72 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_FETCH_RECORDS), 200},
73 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_DENTRY_FILE_INSERT), 200},
74 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_GET_CREATED_RECORDS), 200},
75 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_GET_META_MODIFIED_RECORDS), 200},
76 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_GET_DELETED_RECORDS), 200},
77 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_GET_CHECK_RECORDS), 200},
78 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_CREATE_RECORDS), 200},
79 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_MDIRTY_RECORDS), 200},
80 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_FDIRTY_RECORDS), 200},
81 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_DELETE_RECORDS), 200},
82 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_COPY_RECORDS), 200},
83 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_START_SYNC), 200},
84 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_COMPLETE_SYNC), 200},
85 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_COMPLETE_PULL), 200},
86 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_COMPLETE_PUSH), 200},
87 {static_cast<uint32_t>(CloudSync::CloudMediaAlbumOperationCode::CMD_ON_COMPLETE_CHECK), 200},
88 //MediaLibraryBusinessCode
89 {static_cast<uint32_t>(MediaLibraryBusinessCode::REMOVE_FORM_INFO), 200},
90 {static_cast<uint32_t>(MediaLibraryBusinessCode::REMOVE_GALLERY_FORM_INFO), 200},
91 {static_cast<uint32_t>(MediaLibraryBusinessCode::SAVE_FORM_INFO), 200},
92 {static_cast<uint32_t>(MediaLibraryBusinessCode::SAVE_GALLERY_FORM_INFO), 200},
93 {static_cast<uint32_t>(MediaLibraryBusinessCode::UPDATE_GALLERY_FORM_INFO), 200},
94 {static_cast<uint32_t>(MediaLibraryBusinessCode::SUBMIT_CLOUD_ENHANCEMENT_TASKS), 200},
95 {static_cast<uint32_t>(MediaLibraryBusinessCode::PRIORITIZE_CLOUD_ENHANCEMENT_TASK), 200},
96 {static_cast<uint32_t>(MediaLibraryBusinessCode::CANCEL_CLOUD_ENHANCEMENT_TASKS), 200},
97 {static_cast<uint32_t>(MediaLibraryBusinessCode::CANCEL_ALL_CLOUD_ENHANCEMENT_TASKS), 200},
98 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_OPEN), 200},
99 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_START_THUMBNAIL_CREATION_TASK), 200},
100 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_STOP_THUMBNAIL_CREATION_TASK), 200},
101 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_CLOUD_ENHANCEMENT_PAIR), 200},
102 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_CLOUD_ENHANCEMENT_TASK_STATE), 200},
103 {static_cast<uint32_t>(MediaLibraryBusinessCode::SYNC_CLOUD_ENHANCEMENT_TASK_STATUS), 200},
104 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_ANALYSIS_PROCESS), 200},
105 {static_cast<uint32_t>(MediaLibraryBusinessCode::MEDIA_BUSINESS_CODE_END), 200},
106 {static_cast<uint32_t>(MediaLibraryBusinessCode::NOTIFY_FOR_RECHECK), 200},
107 {static_cast<uint32_t>(MediaLibraryBusinessCode::CLONE_ASSET), 200},
108 {static_cast<uint32_t>(MediaLibraryBusinessCode::CONVERT_FORMAT), 200},
109 {static_cast<uint32_t>(MediaLibraryBusinessCode::REVERT_TO_ORIGINAL), 200},
110 {static_cast<uint32_t>(MediaLibraryBusinessCode::COMMIT_EDITED_ASSET), 200},
111 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_CREATE_ASSET), 200},
112 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET), 200},
113 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_CREATE_ASSET_FOR_APP), 200},
114 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP), 200},
115 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP_WITH_MODE), 200},
116 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ASSET_FOR_APP_WITH_ALBUM), 200},
117 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_PUBLIC_SET_TITLE), 200},
118 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_PENDING), 200},
119 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_FAVORITE), 200},
120 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_SET_USER_COMMENT), 200},
121 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_ASSET_ANALYSIS_DATA), 200},
122 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_HIDDEN), 200},
123 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_FAVORITE), 200},
124 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_RECENT_SHOW), 200},
125 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_BATCH_SET_USER_COMMENT), 200},
126 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYS_TRASH_PHOTOS), 200},
127 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_TRASH_PHOTOS), 200},
128 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_DELETE_PHOTOS), 200},
129 {static_cast<uint32_t>(MediaLibraryBusinessCode::DELETE_PHOTOS_COMPLETED), 200},
130 {static_cast<uint32_t>(MediaLibraryBusinessCode::START_DOWNLOAD_CLOUDMEDIA), 200},
131 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAUSE_DOWNLOAD_CLOUDMEDIA), 200},
132 {static_cast<uint32_t>(MediaLibraryBusinessCode::CANCEL_DOWNLOAD_CLOUDMEDIA), 200},
133 {static_cast<uint32_t>(MediaLibraryBusinessCode::RETAIN_CLOUDMEDIA_ASSET), 200},
134 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GRANT_PHOTO_URI_PERMISSION), 200},
135 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GRANT_PHOTO_URIS_PERMISSION), 200},
136 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_CANCEL_PHOTO_URI_PERMISSION), 200},
137 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_FAVORITE), 200},
138 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_HIDDEN), 200},
139 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_USER_COMMENT), 200},
140 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_LOCATION), 200},
141 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_TITLE), 200},
142 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SET_EDIT_DATA), 200},
143 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_SUBMIT_CACHE), 200},
144 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_CREATE_ASSET), 200},
145 {static_cast<uint32_t>(MediaLibraryBusinessCode::ASSET_CHANGE_ADD_IMAGE), 200},
146 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_CAMERA_SHOT_KEY), 200},
147 {static_cast<uint32_t>(MediaLibraryBusinessCode::SAVE_CAMERA_PHOTO), 200},
148 {static_cast<uint32_t>(MediaLibraryBusinessCode::DISCARD_CAMERA_PHOTO), 200},
149 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_EFFECT_MODE), 200},
150 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_ORIENTATION), 200},
151 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_VIDEO_ENHANCEMENT_ATTR), 200},
152 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_SUPPORTED_WATERMARK_TYPE), 200},
153 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_ASSETS), 200},
154 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_BURST_ASSETS), 200},
155 {static_cast<uint32_t>(MediaLibraryBusinessCode::FIND_ALL_DUPLICATE_ASSETS), 200},
156 {static_cast<uint32_t>(MediaLibraryBusinessCode::FIND_DUPLICATE_ASSETS_TO_DELETE), 200},
157 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_INDEX_CONSTRUCT_PROGRESS), 200},
158 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_IS_EDITED), 200},
159 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_REQUEST_EDIT_DATA), 200},
160 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_GET_EDIT_DATA), 200},
161 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_GET_CLOUDMEDIA_ASSET_STATUS), 200},
162 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_START_ASSET_ANALYSIS), 200},
163 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_REQUEST_CONTENT), 200},
164 {static_cast<uint32_t>(MediaLibraryBusinessCode::LOG_MOVING_PHOTO), 200},
165 {static_cast<uint32_t>(MediaLibraryBusinessCode::QUERY_PHOTO_STATUS), 200},
166 {static_cast<uint32_t>(MediaLibraryBusinessCode::DELETE_HIGH_LIGHT_ALBUMS), 200},
167 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SYSTEM_CREATE_ALBUM), 200},
168 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_DELETE_PHOTO_ALBUMS), 200},
169 {static_cast<uint32_t>(MediaLibraryBusinessCode::ALBUM_SYS_GET_ASSETS), 200},
170 {static_cast<uint32_t>(MediaLibraryBusinessCode::ALBUM_GET_ASSETS), 200},
171 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_SET_ALBUM_NAME), 200},
172 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_SET_COVER_URI), 200},
173 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_SET_IS_ME), 200},
174 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_SET_DISPLAY_LEVEL), 200},
175 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_DISMISS), 200},
176 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_RESET_COVER_URI), 200},
177 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_HIGH_LIGHT_USER_ACTION_DATA), 200},
178 {static_cast<uint32_t>(MediaLibraryBusinessCode::SET_SUBTITLE), 200},
179 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_ADD_ASSETS), 200},
180 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_REMOVE_ASSETS), 200},
181 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_MOVE_ASSETS), 200},
182 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_RECOVER_ASSETS), 200},
183 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_DELETE_ASSETS), 200},
184 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_DISMISS_ASSETS), 200},
185 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_MERGE_ALBUM), 200},
186 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_PLACE_BEFORE), 200},
187 {static_cast<uint32_t>(MediaLibraryBusinessCode::CHANGE_REQUEST_SET_ORDER_POSITION), 200},
188 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_COMMIT_MODIFY), 200},
189 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_ADD_ASSETS), 200},
190 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_REMOVE_ASSETS), 200},
191 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_RECOVER_ASSETS), 200},
192 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SET_COVER_URI), 200},
193 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_PHOTO_ALBUMS), 200},
194 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_HIDDEN_ALBUMS), 200},
195 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_ORDER_POSITION), 200},
196 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_QUERY_GET_ALBUMS_BY_IDS), 200},
197 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_FACE_ID), 200},
198 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_PHOTO_INDEX), 200},
199 {static_cast<uint32_t>(MediaLibraryBusinessCode::GET_HIGHLIGHT_ALBUM_INFO), 200},
200 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_PHOTO_ALBUMS), 200},
201 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_GET_PHOTO_ALBUM_ORDER), 200},
202 {static_cast<uint32_t>(MediaLibraryBusinessCode::PAH_SET_PHOTO_ALBUM_ORDER), 200},
203 {static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_RETAIN_CLOUDMEDIA_ASSET), 200},
204 {static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_PAH_QUERY_PHOTO_ALBUMS), 200},
205 {static_cast<uint32_t>(MediaLibraryBusinessCode::INNER_PAH_QUERY_GET_ALBUMS_BY_IDS), 200},
206 };
207
GetOperationCodeTimeout(uint32_t operationCode)208 int64_t DfxTimer::GetOperationCodeTimeout(uint32_t operationCode)
209 {
210 auto it = DfxTimer::operationCodeTimeoutMap.find(operationCode);
211 if (it != DfxTimer::operationCodeTimeoutMap.end()) {
212 return it->second;
213 }
214 return COMMON_TIME_OUT;
215 }
216
DfxTimer(int32_t object,int64_t timeOut,bool isReport)217 DfxTimer::DfxTimer(int32_t object, int64_t timeOut, bool isReport)
218 {
219 type_ = -1;
220 object_ = object;
221 start_ = MediaFileUtils::UTCTimeMilliSeconds();
222 timeOut_ = timeOut;
223 isReport_ = isReport;
224 isEnd_ = false;
225 uid_ = -1;
226 }
227
DfxTimer(int32_t type,int32_t object,int64_t timeOut,bool isReport)228 DfxTimer::DfxTimer(int32_t type, int32_t object, int64_t timeOut, bool isReport)
229 {
230 type_ = type;
231 object_ = object;
232 start_ = MediaFileUtils::UTCTimeMilliSeconds();
233 timeOut_ = timeOut;
234 isReport_ = isReport;
235 isEnd_ = false;
236 uid_ = -1;
237 }
238
~DfxTimer()239 DfxTimer::~DfxTimer()
240 {
241 if (isEnd_) {
242 return;
243 }
244
245 timeCost_ = MediaFileUtils::UTCTimeMilliSeconds() - start_;
246 if (!isReport_) {
247 if (timeCost_ > timeOut_)
248 MEDIA_WARN_LOG("timeout! type: %{public}d, object: %{public}d, cost %{public}lld ms",
249 type_, object_, (long long) (timeCost_));
250 return;
251 }
252
253 std::string bundleName;
254 if (uid_ > 0) {
255 PermissionUtils::GetClientBundle(uid_, bundleName);
256 } else {
257 bundleName = MediaLibraryBundleManager::GetInstance()->GetClientBundleName();
258 }
259
260 if (timeCost_ > timeOut_) {
261 std::string caller = (bundleName == "") ? "uid=" + std::to_string(IPCSkeleton::GetCallingUid()) : bundleName;
262 MEDIA_WARN_LOG("timeout! caller: %{public}s, type: %{public}d, object: %{public}d, cost %{public}d",
263 caller.c_str(), type_, object_, (int) (timeCost_));
264
265 if (timeCost_ > TO_MILLION)
266 DfxManager::GetInstance()->HandleTimeOutOperation(bundleName, type_, object_, (int) (timeCost_));
267 }
268
269 DfxManager::GetInstance()->HandleCommonBehavior(bundleName, type_);
270 }
271
End()272 void DfxTimer::End()
273 {
274 timeCost_ = MediaFileUtils::UTCTimeMilliSeconds() - start_;
275 if (timeCost_ > timeOut_) {
276 MEDIA_WARN_LOG("timeout! type: %{public}d, object: %{public}d, cost %{public}d ms", type_, object_,
277 (int) (timeCost_));
278 }
279 isEnd_ = true;
280 }
281
SetCallerUid(int32_t uid)282 void DfxTimer::SetCallerUid(int32_t uid)
283 {
284 uid_ = uid;
285 }
286
287 } // namespace Media
288 } // namespace OHOS