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