Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 1 | // |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 2 | // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 3 | // SPDX-License-Identifier: MIT |
| 4 | // |
| 5 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 6 | #include <common/include/CommonProfilingUtils.hpp> |
| 7 | #include <server/include/timelineDecoder/TimelineDecoder.hpp> |
Finn Williams | e6a2ccd | 2020-02-27 16:21:41 +0000 | [diff] [blame] | 8 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 9 | #include <iostream> |
| 10 | #include <sstream> |
| 11 | |
| 12 | namespace arm |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 13 | { |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 14 | namespace pipe |
Finn Williams | 8a2b468 | 2020-02-26 10:25:26 +0000 | [diff] [blame] | 15 | { |
Finn Williams | e6a2ccd | 2020-02-27 16:21:41 +0000 | [diff] [blame] | 16 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 17 | TimelineDecoder::TimelineStatus TimelineDecoder::CreateEntity(const Entity &entity) |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 18 | { |
| 19 | if (m_OnNewEntityCallback == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 20 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 21 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 22 | } |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 23 | ApplyToModel([&](Model& m){ |
| 24 | m_OnNewEntityCallback(m, entity); |
| 25 | }); |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 26 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 27 | } |
| 28 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 29 | TimelineDecoder::TimelineStatus TimelineDecoder::CreateEventClass(const EventClass &eventClass) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 30 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 31 | if (m_OnNewEventClassCallback == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 32 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 33 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 34 | } |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 35 | ApplyToModel([&](Model& m){ |
| 36 | m_OnNewEventClassCallback(m, eventClass); |
| 37 | }); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 38 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 39 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 40 | } |
| 41 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 42 | TimelineDecoder::TimelineStatus TimelineDecoder::CreateEvent(const Event &event) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 43 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 44 | if (m_OnNewEventCallback == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 45 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 46 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 47 | } |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 48 | ApplyToModel([&](Model& m){ |
| 49 | m_OnNewEventCallback(m, event); |
| 50 | }); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 51 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 52 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 53 | } |
| 54 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 55 | TimelineDecoder::TimelineStatus TimelineDecoder::CreateLabel(const Label &label) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 56 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 57 | if (m_OnNewLabelCallback == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 58 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 59 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 60 | } |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 61 | ApplyToModel([&](Model& m){ |
| 62 | m_OnNewLabelCallback(m, label); |
| 63 | }); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 64 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 65 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 66 | } |
| 67 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 68 | TimelineDecoder::TimelineStatus TimelineDecoder::CreateRelationship(const Relationship &relationship) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 69 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 70 | if (m_OnNewRelationshipCallback == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 71 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 72 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 73 | } |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 74 | ApplyToModel([&](Model& m){ |
| 75 | m_OnNewRelationshipCallback(m, relationship); |
| 76 | }); |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 77 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 78 | } |
| 79 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 80 | TimelineDecoder::TimelineStatus TimelineDecoder::SetEntityCallback(OnNewEntityCallback cb) |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 81 | { |
| 82 | if (cb == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 83 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 84 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 85 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 86 | m_OnNewEntityCallback = cb; |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 87 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 88 | } |
| 89 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 90 | TimelineDecoder::TimelineStatus TimelineDecoder::SetEventClassCallback(OnNewEventClassCallback cb) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 91 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 92 | if (cb == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 93 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 94 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 95 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 96 | m_OnNewEventClassCallback = cb; |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 97 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 98 | } |
| 99 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 100 | TimelineDecoder::TimelineStatus TimelineDecoder::SetEventCallback(OnNewEventCallback cb) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 101 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 102 | if (cb == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 103 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 104 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 105 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 106 | m_OnNewEventCallback = cb; |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 107 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 108 | } |
| 109 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 110 | TimelineDecoder::TimelineStatus TimelineDecoder::SetLabelCallback(OnNewLabelCallback cb) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 111 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 112 | if (cb == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 113 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 114 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 115 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 116 | m_OnNewLabelCallback = cb; |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 117 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 118 | } |
| 119 | |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 120 | TimelineDecoder::TimelineStatus TimelineDecoder::SetRelationshipCallback(OnNewRelationshipCallback cb) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 121 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 122 | if (cb == nullptr) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 123 | { |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 124 | return TimelineStatus::TimelineStatus_Fail; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 125 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 126 | m_OnNewRelationshipCallback = cb; |
Keith Davis | 97da5e2 | 2020-03-05 16:25:28 +0000 | [diff] [blame] | 127 | return TimelineStatus::TimelineStatus_Success; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 128 | } |
| 129 | |
Finn Williams | e6a2ccd | 2020-02-27 16:21:41 +0000 | [diff] [blame] | 130 | void TimelineDecoder::SetDefaultCallbacks() |
| 131 | { |
| 132 | SetEntityCallback([](Model& model, const ITimelineDecoder::Entity entity) |
| 133 | { |
| 134 | model.m_Entities.emplace_back(entity); |
| 135 | }); |
| 136 | |
| 137 | SetEventClassCallback([](Model& model, const ITimelineDecoder::EventClass eventClass) |
| 138 | { |
| 139 | model.m_EventClasses.emplace_back(eventClass); |
| 140 | }); |
| 141 | |
| 142 | SetEventCallback([](Model& model, const ITimelineDecoder::Event event) |
| 143 | { |
| 144 | model.m_Events.emplace_back(event); |
| 145 | }); |
| 146 | |
| 147 | SetLabelCallback([](Model& model, const ITimelineDecoder::Label label) |
| 148 | { |
| 149 | model.m_Labels.emplace_back(label); |
| 150 | }); |
| 151 | |
| 152 | SetRelationshipCallback([](Model& model, const ITimelineDecoder::Relationship relationship) |
| 153 | { |
| 154 | model.m_Relationships.emplace_back(relationship); |
| 155 | }); |
| 156 | } |
| 157 | |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 158 | void TimelineDecoder::print() |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 159 | { |
Finn Williams | d7fcafa | 2020-04-23 17:55:18 +0100 | [diff] [blame] | 160 | if (m_Model.m_Labels.empty() && m_Model.m_Entities.empty() && m_Model.m_EventClasses.empty() && |
| 161 | m_Model.m_Events.empty() && m_Model.m_Relationships.empty()) |
| 162 | { |
| 163 | std::cout << "No timeline packets received" << std::endl; |
| 164 | return; |
| 165 | } |
| 166 | |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 167 | printLabels(); |
| 168 | printEntities(); |
| 169 | printEventClasses(); |
| 170 | printEvents(); |
| 171 | printRelationships(); |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 172 | } |
| 173 | |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 174 | void TimelineDecoder::printLabels() |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 175 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 176 | std::string header; |
| 177 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 178 | header.append(arm::pipe::CentreAlignFormatting("guid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 179 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 180 | header.append(arm::pipe::CentreAlignFormatting("value", 30)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 181 | header.append("\n"); |
| 182 | |
| 183 | std::cout << "\n" << "\n"; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 184 | std::cout << arm::pipe::CentreAlignFormatting("LABELS", static_cast<int>(header.size())); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 185 | std::cout << "\n"; |
| 186 | std::cout << std::string(header.size(), '=') << "\n"; |
| 187 | std::cout << header; |
| 188 | |
| 189 | for (uint32_t i = 0; i < m_Model.m_Labels.size(); ++i) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 190 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 191 | std::string body; |
| 192 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 193 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Labels[i].m_Guid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 194 | body.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 195 | body.append(arm::pipe::CentreAlignFormatting(m_Model.m_Labels[i].m_Name, 30)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 196 | body.append("\n"); |
| 197 | |
| 198 | std::cout << std::string(body.size(), '-') << "\n"; |
| 199 | std::cout << body; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 200 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 201 | } |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 202 | |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 203 | void TimelineDecoder::printEntities() |
| 204 | { |
| 205 | std::string header; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 206 | header.append(arm::pipe::CentreAlignFormatting("guid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 207 | header.append("\n"); |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 208 | |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 209 | std::cout << "\n" << "\n"; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 210 | std::cout << arm::pipe::CentreAlignFormatting("ENTITIES", static_cast<int>(header.size())); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 211 | std::cout << "\n"; |
| 212 | std::cout << std::string(header.size(), '=') << "\n"; |
| 213 | std::cout << header; |
| 214 | |
| 215 | for (uint32_t i = 0; i < m_Model.m_Entities.size(); ++i) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 216 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 217 | std::string body; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 218 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 219 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Entities[i].m_Guid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 220 | body.append("\n"); |
| 221 | |
| 222 | std::cout << std::string(body.size(), '-') << "\n"; |
| 223 | std::cout << body; |
| 224 | } |
| 225 | } |
| 226 | |
| 227 | void TimelineDecoder::printEventClasses() |
| 228 | { |
| 229 | std::string header; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 230 | header.append(arm::pipe::CentreAlignFormatting("guid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 231 | header.append("\n"); |
| 232 | |
| 233 | std::cout << "\n" << "\n"; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 234 | std::cout << arm::pipe::CentreAlignFormatting("EVENT CLASSES", static_cast<int>(header.size())); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 235 | std::cout << "\n"; |
| 236 | std::cout << std::string(header.size(), '=') << "\n"; |
| 237 | std::cout << header; |
| 238 | |
| 239 | for (uint32_t i = 0; i < m_Model.m_EventClasses.size(); ++i) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 240 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 241 | std::string body; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 242 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 243 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_EventClasses[i].m_Guid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 244 | body.append("\n"); |
| 245 | |
| 246 | std::cout << std::string(body.size(), '-') << "\n"; |
| 247 | std::cout << body; |
| 248 | } |
| 249 | } |
| 250 | |
| 251 | void TimelineDecoder::printEvents() |
| 252 | { |
| 253 | std::string header; |
| 254 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 255 | header.append(arm::pipe::CentreAlignFormatting("timestamp", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 256 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 257 | header.append(arm::pipe::CentreAlignFormatting("threadId", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 258 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 259 | header.append(arm::pipe::CentreAlignFormatting("eventGuid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 260 | header.append("\n"); |
| 261 | |
| 262 | std::cout << "\n" << "\n"; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 263 | std::cout << arm::pipe::CentreAlignFormatting("EVENTS", static_cast<int>(header.size())); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 264 | std::cout << "\n"; |
| 265 | std::cout << std::string(header.size(), '=') << "\n"; |
| 266 | std::cout << header; |
| 267 | |
| 268 | for (uint32_t i = 0; i < m_Model.m_Events.size(); ++i) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 269 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 270 | std::string body; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 271 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 272 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Events[i].m_TimeStamp), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 273 | body.append(" | "); |
| 274 | |
| 275 | std::stringstream ss; |
| 276 | ss << m_Model.m_Events[i].m_ThreadId; |
| 277 | std::string threadId = ss.str();; |
| 278 | |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 279 | body.append(arm::pipe::CentreAlignFormatting(threadId, 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 280 | body.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 281 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Events[i].m_Guid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 282 | body.append("\n"); |
| 283 | |
| 284 | std::cout << std::string(body.size(), '-') << "\n"; |
| 285 | std::cout << body; |
| 286 | } |
| 287 | } |
| 288 | |
| 289 | void TimelineDecoder::printRelationships() |
| 290 | { |
| 291 | std::string header; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 292 | header.append(arm::pipe::CentreAlignFormatting("relationshipType", 20)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 293 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 294 | header.append(arm::pipe::CentreAlignFormatting("relationshipGuid", 20)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 295 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 296 | header.append(arm::pipe::CentreAlignFormatting("headGuid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 297 | header.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 298 | header.append(arm::pipe::CentreAlignFormatting("tailGuid", 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 299 | header.append("\n"); |
| 300 | |
| 301 | std::cout << "\n" << "\n"; |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 302 | std::cout << arm::pipe::CentreAlignFormatting("RELATIONSHIPS", static_cast<int>(header.size())); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 303 | std::cout << "\n"; |
| 304 | std::cout << std::string(header.size(), '=') << "\n"; |
| 305 | std::cout << header; |
| 306 | |
| 307 | for (uint32_t i = 0; i < m_Model.m_Relationships.size(); ++i) |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 308 | { |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 309 | std::string body; |
| 310 | |
| 311 | body.append( |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 312 | arm::pipe::CentreAlignFormatting(std::to_string(static_cast<unsigned int> |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 313 | (m_Model.m_Relationships[i].m_RelationshipType)), |
| 314 | 20)); |
| 315 | body.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 316 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_Guid), 20)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 317 | body.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 318 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_HeadGuid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 319 | body.append(" | "); |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 320 | body.append(arm::pipe::CentreAlignFormatting(std::to_string(m_Model.m_Relationships[i].m_TailGuid), 12)); |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 321 | body.append(" | "); |
| 322 | body.append("\n"); |
| 323 | |
| 324 | std::cout << std::string(body.size(), '-') << "\n"; |
| 325 | std::cout << body; |
Finn Williams | e63a026 | 2019-10-22 10:30:49 +0100 | [diff] [blame] | 326 | } |
Finn Williams | 510f618 | 2020-02-21 11:14:08 +0000 | [diff] [blame] | 327 | } |
Jim Flynn | bbfe603 | 2020-07-20 16:57:44 +0100 | [diff] [blame] | 328 | |
| 329 | } // namespace pipe |
Matthew Bentham | 6ae43c4 | 2022-01-10 13:34:12 +0000 | [diff] [blame] | 330 | } // namespace arm |