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_