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 16 #ifndef KERNEL_SNAPSHOT_CONTENT_BUILDER_H 17 #define KERNEL_SNAPSHOT_CONTENT_BUILDER_H 18 19 #include "kernel_snapshot_data.h" 20 21 namespace OHOS { 22 namespace HiviewDFX { 23 class KernelSnapshotContentBuilder { 24 public: 25 explicit KernelSnapshotContentBuilder(CrashMap& crashData, bool isLocal = false) crashData_(crashData)26 : crashData_(crashData), isLocal_(isLocal) {} 27 std::string GenerateSummary(); 28 29 KernelSnapshotContentBuilder(const KernelSnapshotContentBuilder&) = delete; 30 KernelSnapshotContentBuilder& operator=(const KernelSnapshotContentBuilder&) = delete; 31 32 private: 33 struct SnapshotUserSection { 34 std::string title; 35 std::string content; 36 std::string suffix; 37 SnapshotUserSectionSnapshotUserSection38 SnapshotUserSection(std::string title, std::string content, std::string suffix) 39 : title(std::move(title)), content(std::move(content)), suffix(std::move(suffix)) {} 40 bool IsEmptyContent() const; 41 size_t Length() const; 42 void WriteTo(std::string& output) const; 43 }; 44 45 std::vector<SnapshotUserSection> BuildSections(); 46 size_t ComputeTotalLength(); 47 std::string ComposeSummary(); 48 49 CrashMap& crashData_; 50 bool isLocal_; 51 std::vector<SnapshotUserSection> contentSections_; 52 }; 53 } // namespace HiviewDFX 54 } // namespace OHOS 55 #endif 56