11e934351Sopenharmony_ci/*
21e934351Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41e934351Sopenharmony_ci * you may not use this file except in compliance with the License.
51e934351Sopenharmony_ci * You may obtain a copy of the License at
61e934351Sopenharmony_ci *
71e934351Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81e934351Sopenharmony_ci *
91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121e934351Sopenharmony_ci * See the License for the specific language governing permissions and
131e934351Sopenharmony_ci * limitations under the License.
141e934351Sopenharmony_ci */
151e934351Sopenharmony_ci
161e934351Sopenharmony_ci#ifndef NETSTACK_REQUEST_TRACER_H
171e934351Sopenharmony_ci#define NETSTACK_REQUEST_TRACER_H
181e934351Sopenharmony_ci#include <optional>
191e934351Sopenharmony_ci#include <string>
201e934351Sopenharmony_cinamespace OHOS::NetStack::RequestTracer {
211e934351Sopenharmony_ci    class Trace final {
221e934351Sopenharmony_ci    public:
231e934351Sopenharmony_ci        Trace(const std::string &className, int32_t idNum);
241e934351Sopenharmony_ci        explicit Trace(const std::string &className);
251e934351Sopenharmony_ci        ~Trace();
261e934351Sopenharmony_ci        void Tracepoint(const std::string &stage);
271e934351Sopenharmony_ci        void Finish();
281e934351Sopenharmony_ci
291e934351Sopenharmony_ci        static int32_t GenerateId();
301e934351Sopenharmony_ci    private:
311e934351Sopenharmony_ci        std::string className_;
321e934351Sopenharmony_ci        std::optional<std::string> stageName_;
331e934351Sopenharmony_ci        [[maybe_unused]] int32_t idNum_;
341e934351Sopenharmony_ci    };
351e934351Sopenharmony_ci} // namespace OHOS::NetStack::RequestTracer
361e934351Sopenharmony_ci#endif // NETSTACK_REQUEST_TRACER_H