• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #ifndef HIVIEWDFX_HIVIEW_TRACE_BASE_STATE_H
16 #define HIVIEWDFX_HIVIEW_TRACE_BASE_STATE_H
17 #include <memory>
18 
19 #include "trace_common.h"
20 
21 namespace OHOS::HiviewDFX {
22 class TraceBaseState {
23 public:
24     virtual ~TraceBaseState() = default;
25     virtual TraceRet OpenTrace(TraceScenario scenario, const std::vector <std::string> &tagGroups);
26     virtual TraceRet OpenTrace(TraceScenario scenario, const std::string &args);
27     virtual TraceRet OpenTelemetryTrace(const std::string &args, TelemetryPolicy policy);
28     virtual TraceRet OpenAppTrace(int32_t appPid);
29     virtual TraceRet DumpTrace(TraceScenario scenario, uint32_t maxDuration, uint64_t happenTime, TraceRetInfo &info);
30     virtual TraceRet DumpTraceAsync(const DumpTraceArgs &args, int64_t fileSizeLimit,
31         TraceRetInfo &info, DumpTraceCallback callback);
32     virtual TraceRet DumpTraceWithFilter(uint32_t maxDuration, uint64_t happenTime, TraceRetInfo &info);
33     virtual TraceRet TraceDropOn(TraceScenario scenario);
34     virtual TraceRet TraceDropOff(TraceScenario scenario, TraceRetInfo &info);
35     virtual TraceRet TraceCacheOn();
36     virtual TraceRet SetCacheParams(int32_t totalFileSize, int32_t sliceMaxDuration);
37     virtual TraceRet TraceCacheOff();
38     virtual TraceRet CloseTrace(TraceScenario scenario);
39     virtual TraceRet TraceTelemetryOn();
40     virtual TraceRet TraceTelemetryOff();
41     virtual TraceRet PostTelemetryOn(uint64_t time);
42     virtual TraceRet PostTelemetryTimeOut();
43     virtual TraceRet PowerTelemetryOn();
44     virtual TraceRet PowerTelemetryOff();
45     virtual int32_t SetAppFilterInfo(const std::string &bundleName);
46     virtual int32_t SetFilterPidInfo(pid_t pid);
47     virtual void InitTelemetryStatus(bool isStatusOn);
48 
RegisterTelemetryCallback(std::shared_ptr<TelemetryCallback> stateCallback)49     virtual bool RegisterTelemetryCallback(std::shared_ptr <TelemetryCallback> stateCallback)
50     {
51         return false;
52     }
53 
GetTaskBeginTime()54     virtual uint64_t GetTaskBeginTime()
55     {
56         return 0;
57     }
58 
GetAppPid()59     virtual int32_t GetAppPid()
60     {
61         return -1;
62     }
63 
64 protected:
65     virtual std::string GetTag() = 0;
66 };
67 
68 class CloseState : public TraceBaseState {
69 public:
70     TraceRet OpenTelemetryTrace(const std::string &args, TelemetryPolicy policy) override;
71     TraceRet OpenAppTrace(int32_t appPid) override;
72     TraceRet CloseTrace(TraceScenario scenario) override;
73 
74 protected:
GetTag()75     std::string GetTag() override
76     {
77         return "CloseState";
78     }
79 };
80 }
81 #endif //HIVIEWDFX_HIVIEW_TRACE_BASE_STATE_H
82