aboutsummaryrefslogtreecommitdiff
path: root/profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp
diff options
context:
space:
mode:
authorJim Flynn <jim.flynn@arm.com>2020-07-20 16:57:44 +0100
committerJim Flynn <jim.flynn@arm.com>2020-07-29 15:35:15 +0100
commitbbfe603e5ae42317a2b67d713d00882bea341c88 (patch)
tree8d8a78d6836384fb92fb9741c865443624dfec68 /profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp
parenta9c2ce123a6a5a68728d040a0323c482bbe46903 (diff)
downloadarmnn-bbfe603e5ae42317a2b67d713d00882bea341c88.tar.gz
IVGCVSW-5166 Pull out the common and server side code into standalone libraries
Change-Id: I180f84c493a9b2be4b93b25d312ebdd9e71b1735 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp')
-rw-r--r--profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp b/profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp
new file mode 100644
index 0000000000..c51cfd32cd
--- /dev/null
+++ b/profiling/server/include/timelineDecoder/TimelineCaptureCommandHandler.hpp
@@ -0,0 +1,63 @@
+//
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include "ITimelineDecoder.hpp"
+
+#include <common/include/CommandHandlerFunctor.hpp>
+#include <common/include/Packet.hpp>
+
+namespace arm
+{
+
+namespace pipe
+{
+
+class TimelineCaptureCommandHandler : public arm::pipe::CommandHandlerFunctor
+{
+ // Utils
+ uint32_t uint32_t_size = sizeof(uint32_t);
+ uint32_t uint64_t_size = sizeof(uint64_t);
+
+ using ReadFunction = ITimelineDecoder::TimelineStatus (TimelineCaptureCommandHandler::*)(
+ const unsigned char*, uint32_t&);
+
+public:
+ TimelineCaptureCommandHandler(uint32_t familyId,
+ uint32_t packetId,
+ uint32_t version,
+ ITimelineDecoder& timelineDecoder,
+ uint32_t threadIdSize = 0)
+ : CommandHandlerFunctor(familyId, packetId, version)
+ , m_TimelineDecoder(timelineDecoder)
+ , m_ThreadIdSize(threadIdSize)
+ , m_PacketLength(0)
+ {}
+
+ void operator()(const arm::pipe::Packet& packet) override;
+
+
+ void SetThreadIdSize(uint32_t size);
+
+private:
+ void ParseData(const arm::pipe::Packet& packet);
+
+ ITimelineDecoder::TimelineStatus ReadLabel(const unsigned char* data, uint32_t& offset);
+ ITimelineDecoder::TimelineStatus ReadEntity(const unsigned char* data, uint32_t& offset);
+ ITimelineDecoder::TimelineStatus ReadEventClass(const unsigned char* data, uint32_t& offset);
+ ITimelineDecoder::TimelineStatus ReadRelationship(const unsigned char* data, uint32_t& offset);
+ ITimelineDecoder::TimelineStatus ReadEvent(const unsigned char* data, uint32_t& offset);
+
+ ITimelineDecoder& m_TimelineDecoder;
+ uint32_t m_ThreadIdSize;
+ unsigned int m_PacketLength;
+ static const ReadFunction m_ReadFunctions[];
+
+};
+
+} //namespace pipe
+
+} //namespace arm