• 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 #include "faultlog_processor_factory.h"
16 
17 #include "faultlog_freeze.h"
18 #include "faultlog_cppcrash.h"
19 #include "faultlog_events_processor.h"
20 #include "hiview_logger.h"
21 
22 namespace OHOS {
23 namespace HiviewDFX {
24 DEFINE_LOG_LABEL(0xD002D11, "Faultlogger");
25 
FaultLogProcessorFactory()26 FaultLogProcessorFactory::FaultLogProcessorFactory()
27 {
28     InitializeProcessors();
29 }
30 
InitializeProcessors()31 void FaultLogProcessorFactory::InitializeProcessors()
32 {
33     faultLogProcessors[FaultLogType::CPP_CRASH] = []() {
34         return std::make_unique<FaultLogCppCrash>();
35     };
36     faultLogProcessors[FaultLogType::APP_FREEZE] = []() {
37         return std::make_unique<FaultLogFreeze>();
38     };
39     faultLogProcessors[FaultLogType::SYS_FREEZE] = faultLogProcessors[FaultLogType::APP_FREEZE];
40     faultLogProcessors[FaultLogType::SYS_WARNING] = faultLogProcessors[FaultLogType::APP_FREEZE];
41 }
42 
CreateFaultLogProcessor(FaultLogType type)43 std::unique_ptr<FaultLogProcessorInterface> FaultLogProcessorFactory::CreateFaultLogProcessor(FaultLogType type)
44 {
45     auto it = faultLogProcessors.find(type);
46     if (it != faultLogProcessors.end()) {
47         return it->second();
48     }
49     return nullptr;
50 }
51 } // namespace HiviewDFX
52 } // namespace OHOS
53