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