13e5483f6Sopenharmony_ci/*
23e5483f6Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
33e5483f6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43e5483f6Sopenharmony_ci * you may not use this file except in compliance with the License.
53e5483f6Sopenharmony_ci * You may obtain a copy of the License at
63e5483f6Sopenharmony_ci *
73e5483f6Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
83e5483f6Sopenharmony_ci *
93e5483f6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103e5483f6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113e5483f6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123e5483f6Sopenharmony_ci * See the License for the specific language governing permissions and
133e5483f6Sopenharmony_ci * limitations under the License.
143e5483f6Sopenharmony_ci */
153e5483f6Sopenharmony_ci
163e5483f6Sopenharmony_ci#ifndef OHOS_RINGTONE_TRACER
173e5483f6Sopenharmony_ci#define OHOS_RINGTONE_TRACER
183e5483f6Sopenharmony_ci
193e5483f6Sopenharmony_ci#include "hitrace_meter.h"
203e5483f6Sopenharmony_ci
213e5483f6Sopenharmony_cinamespace OHOS {
223e5483f6Sopenharmony_cinamespace Media {
233e5483f6Sopenharmony_ci#define COMPILE_HIDDEN __attribute__ ((visibility ("hidden")))
243e5483f6Sopenharmony_ciclass RingtoneTracer final {
253e5483f6Sopenharmony_cipublic:
263e5483f6Sopenharmony_ci    RingtoneTracer() = default;
273e5483f6Sopenharmony_ci
283e5483f6Sopenharmony_ci    virtual ~RingtoneTracer()
293e5483f6Sopenharmony_ci    {
303e5483f6Sopenharmony_ci        for (int32_t i = 0; i < count_; i++) {
313e5483f6Sopenharmony_ci            FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
323e5483f6Sopenharmony_ci        }
333e5483f6Sopenharmony_ci
343e5483f6Sopenharmony_ci        count_ = 0;
353e5483f6Sopenharmony_ci    }
363e5483f6Sopenharmony_ci
373e5483f6Sopenharmony_ci    void Start(const std::string &label)
383e5483f6Sopenharmony_ci    {
393e5483f6Sopenharmony_ci        StartTrace(HITRACE_TAG_FILEMANAGEMENT, label);
403e5483f6Sopenharmony_ci        count_++;
413e5483f6Sopenharmony_ci    }
423e5483f6Sopenharmony_ci
433e5483f6Sopenharmony_ci    void Finish()
443e5483f6Sopenharmony_ci    {
453e5483f6Sopenharmony_ci        FinishTrace(HITRACE_TAG_FILEMANAGEMENT);
463e5483f6Sopenharmony_ci        count_--;
473e5483f6Sopenharmony_ci    }
483e5483f6Sopenharmony_ci
493e5483f6Sopenharmony_ciprivate:
503e5483f6Sopenharmony_ci    COMPILE_HIDDEN int32_t count_ = 0;
513e5483f6Sopenharmony_ci};
523e5483f6Sopenharmony_ci} // namespace Media
533e5483f6Sopenharmony_ci} // namespace OHOS
543e5483f6Sopenharmony_ci#endif // OHOS_RINGTONE_TRACER
55