• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2024 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 COMMAND_REPORTER_H_
16 #define COMMAND_REPORTER_H_
17 
18 #include <string>
19 namespace OHOS::Developtools::HiPerf {
20 
21 #define MAKE_ERROR_ITEM(GEN_ITEM)                        \
22     GEN_ITEM(NO_ERR),                           /*  0 */ \
23     GEN_ITEM(PROCESS_CONTROL_FAIL),             /*  1 */ \
24     GEN_ITEM(PREPARE_SYS_KERNEL_FAIL),          /*  2 */ \
25     GEN_ITEM(PREPARE_PERF_EVENT_FAIL),          /*  3 */ \
26     GEN_ITEM(PREPARE_TACKING_FAIL),             /*  4 */ \
27     GEN_ITEM(CREATE_OUTPUT_FILE_FAIL),          /*  5 */ \
28     GEN_ITEM(PREPARE_VIRTUAL_RUNTIME_FAIL),     /*  6 */ \
29     GEN_ITEM(PREPARE_START_TRACKING_FAIL),      /*  7 */ \
30     GEN_ITEM(START_TRACKING_FAIL),              /*  8 */ \
31     GEN_ITEM(FINISH_WRITE_RECORD_FILE_FAIL),    /*  9 */ \
32     GEN_ITEM(POST_PROCESS_RECORD_FILE),         /* 10 */ \
33     GEN_ITEM(CHECK_RESTART_OPTION_FAIL),        /* 11 */ \
34     GEN_ITEM(CHECK_SELECT_CPU_PID_FAIL),        /* 12 */ \
35     GEN_ITEM(CHECK_STAT_OPTION_FAIL),           /* 13 */ \
36     GEN_ITEM(CHECK_APP_RUNNING_FAIL),           /* 14 */ \
37     GEN_ITEM(CHECK_OPTION_PID_FAIL),            /* 15 */ \
38     GEN_ITEM(CHECK_OPTION_PID_APP_FAIL),        /* 16 */ \
39     GEN_ITEM(PREPAIR_EVENTS_FAIL),              /* 17 */ \
40     GEN_ITEM(PREPARE_OUTPUT_FAIL),              /* 18 */ \
41     GEN_ITEM(LOAD_PERF_DATA_FAIL),              /* 19 */ \
42     GEN_ITEM(LOAD_SECOND_PERF_DATA_FAIL),       /* 20 */ \
43     GEN_ITEM(OUTPUT_REPORT_FAIL),               /* 21 */ \
44     GEN_ITEM(PREPARE_DUMP_OUTPUT_FAIL),         /* 22 */ \
45     GEN_ITEM(DUMP_ELF_FILE_ERROR),              /* 23 */ \
46     GEN_ITEM(DUMP_PROTO_FILE_ERROR),            /* 24 */ \
47     GEN_ITEM(ACCESS_DATA_FILE_FAIL),            /* 25 */ \
48     GEN_ITEM(OPEN_DATA_FILE_FAIL),              /* 26 */ \
49     GEN_ITEM(SET_SYMBOLS_PATH_FAIL),            /* 27 */ \
50     GEN_ITEM(OPTION_NOT_SUPPORT),               /* 28 */ \
51     GEN_ITEM(SUBCOMMAND_OPTIONS_ERROR)          /* 29 */
52 
53 #define FOR_ERROR_ENUM(x) x
54 
55 enum class HiperfError : int32_t {
56     MAKE_ERROR_ITEM(FOR_ERROR_ENUM)
57 };
58 
59 class CommandReporter {
60 public:
61     explicit CommandReporter(const std::string& fullArgument);
62     ~CommandReporter();
63 
64     void ReportCommand();
65 
66     std::string mainCommand_ = "";
67     std::string subCommand_ = "";
68     std::string caller_ = "";
69     std::string targetProcess_ = "";
70     HiperfError errorCode_ = HiperfError::NO_ERR;
71 
72 private:
73     bool isReported_ = false;
74 
75     CommandReporter(const CommandReporter&) = delete;
76     CommandReporter& operator=(const CommandReporter&) = delete;
77     CommandReporter(CommandReporter&&) = delete;
78     CommandReporter& operator=(CommandReporter&&) = delete;
79 };
80 
81 } // namespace OHOS::Developtools::HiPerf
82 
83 #endif // COMMAND_REPORTER_H_