18d05d8e7Sopenharmony_ci/* 28d05d8e7Sopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 38d05d8e7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48d05d8e7Sopenharmony_ci * you may not use this file except in compliance with the License. 58d05d8e7Sopenharmony_ci * You may obtain a copy of the License at 68d05d8e7Sopenharmony_ci * 78d05d8e7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88d05d8e7Sopenharmony_ci * 98d05d8e7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108d05d8e7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118d05d8e7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128d05d8e7Sopenharmony_ci * See the License for the specific language governing permissions and 138d05d8e7Sopenharmony_ci * limitations under the License. 148d05d8e7Sopenharmony_ci */ 158d05d8e7Sopenharmony_ci 168d05d8e7Sopenharmony_ci#ifndef OHOS_USER_ACCESS_TRACER 178d05d8e7Sopenharmony_ci#define OHOS_USER_ACCESS_TRACER 188d05d8e7Sopenharmony_ci 198d05d8e7Sopenharmony_ci#include <string.h> 208d05d8e7Sopenharmony_ci#include "hitrace_meter.h" 218d05d8e7Sopenharmony_ci 228d05d8e7Sopenharmony_ciclass UserAccessTracer final { 238d05d8e7Sopenharmony_cipublic: 248d05d8e7Sopenharmony_ci UserAccessTracer() = default; 258d05d8e7Sopenharmony_ci 268d05d8e7Sopenharmony_ci virtual ~UserAccessTracer() 278d05d8e7Sopenharmony_ci { 288d05d8e7Sopenharmony_ci for (int32_t i = 0; i < count_; i++) { 298d05d8e7Sopenharmony_ci FinishTrace(HITRACE_TAG_FILEMANAGEMENT); 308d05d8e7Sopenharmony_ci } 318d05d8e7Sopenharmony_ci count_ = 0; 328d05d8e7Sopenharmony_ci } 338d05d8e7Sopenharmony_ci 348d05d8e7Sopenharmony_ci void Start(const std::string &label) 358d05d8e7Sopenharmony_ci { 368d05d8e7Sopenharmony_ci StartTrace(HITRACE_TAG_FILEMANAGEMENT, label); 378d05d8e7Sopenharmony_ci count_++; 388d05d8e7Sopenharmony_ci } 398d05d8e7Sopenharmony_ci 408d05d8e7Sopenharmony_ci void Finish() 418d05d8e7Sopenharmony_ci { 428d05d8e7Sopenharmony_ci FinishTrace(HITRACE_TAG_FILEMANAGEMENT); 438d05d8e7Sopenharmony_ci count_--; 448d05d8e7Sopenharmony_ci } 458d05d8e7Sopenharmony_ciprivate: 468d05d8e7Sopenharmony_ci int32_t count_ = 0; 478d05d8e7Sopenharmony_ci}; 488d05d8e7Sopenharmony_ci 498d05d8e7Sopenharmony_ci#endif // OHOS_USER_ACCESS_TRACER 50