IVGCVSW-4028 Add TimelinePacketWriterFactory to ProfilingService
authorJim Flynn <jim.flynn@arm.com>
Thu, 24 Oct 2019 17:07:44 +0000 (18:07 +0100)
committerJim Flynn <jim.flynn@arm.com>
Fri, 25 Oct 2019 11:26:00 +0000 (12:26 +0100)
Change-Id: I1baf6ff49fc591577efab8190352f2ae5a7dc5e5
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
src/profiling/ProfilingService.cpp
src/profiling/ProfilingService.hpp
src/profiling/test/SendTimelinePacketTests.cpp

index 6122ed9..c4063a5 100644 (file)
@@ -251,6 +251,11 @@ ProfilingStaticGuid ProfilingService::GenerateStaticId(const std::string& str)
     return m_GuidGenerator.GenerateStaticId(str);
 }
 
+std::unique_ptr<ISendTimelinePacket> ProfilingService::GetSendTimelinePacket() const
+{
+    return m_TimelinePacketWriterFactory.GetSendTimelinePacket();
+}
+
 void ProfilingService::Initialize()
 {
     // Register a category for the basic runtime counters
index c70c670..54b0f93 100644 (file)
@@ -5,19 +5,20 @@
 
 #pragma once
 
-#include "ProfilingStateMachine.hpp"
-#include "ProfilingConnectionFactory.hpp"
+#include "BufferManager.hpp"
+#include "CommandHandler.hpp"
+#include "ConnectionAcknowledgedCommandHandler.hpp"
 #include "CounterDirectory.hpp"
 #include "ICounterValues.hpp"
-#include "CommandHandler.hpp"
-#include "BufferManager.hpp"
-#include "SendCounterPacket.hpp"
 #include "PeriodicCounterCapture.hpp"
-#include "ConnectionAcknowledgedCommandHandler.hpp"
-#include "RequestCounterDirectoryCommandHandler.hpp"
 #include "PeriodicCounterSelectionCommandHandler.hpp"
 #include "PerJobCounterSelectionCommandHandler.hpp"
+#include "ProfilingConnectionFactory.hpp"
 #include "ProfilingGuidGenerator.hpp"
+#include "ProfilingStateMachine.hpp"
+#include "RequestCounterDirectoryCommandHandler.hpp"
+#include "SendCounterPacket.hpp"
+#include "TimelinePacketWriterFactory.hpp"
 
 namespace armnn
 {
@@ -73,6 +74,8 @@ public:
     /// Create a ProfilingStaticGuid based on a hash of the string
     ProfilingStaticGuid GenerateStaticId(const std::string& str) override;
 
+    std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() const;
+
 private:
     // Copy/move constructors/destructors and copy/move assignment operators are deleted
     ProfilingService(const ProfilingService&) = delete;
@@ -109,6 +112,7 @@ private:
     PeriodicCounterSelectionCommandHandler m_PeriodicCounterSelectionCommandHandler;
     PerJobCounterSelectionCommandHandler m_PerJobCounterSelectionCommandHandler;
     ProfilingGuidGenerator m_GuidGenerator;
+    TimelinePacketWriterFactory m_TimelinePacketWriterFactory;
 
 protected:
     // Default constructor/destructor kept protected for testing
@@ -151,6 +155,7 @@ protected:
                                                  5,
                                                  m_PacketVersionResolver.ResolvePacketVersion(0, 5).GetEncodedValue(),
                                                  m_StateMachine)
+        , m_TimelinePacketWriterFactory(m_BufferManager)
     {
         // Register the "Connection Acknowledged" command handler
         m_CommandHandlerRegistry.RegisterFunctor(&m_ConnectionAcknowledgedCommandHandler);
index 4045d26..9b144bb 100644 (file)
@@ -403,4 +403,15 @@ BOOST_AUTO_TEST_CASE(GetGuidsFromProfilingService)
     BOOST_CHECK(dynamicGuid == expectedDynamicValue);
 }
 
+BOOST_AUTO_TEST_CASE(GetTimelinePackerWriterFromProfilingService)
+{
+    armnn::Runtime::CreationOptions::ExternalProfilingOptions options;
+    options.m_EnableProfiling = true;
+    ProfilingService& profilingService = ProfilingService::Instance();
+    profilingService.ResetExternalProfilingOptions(options, true);
+
+    std::unique_ptr<ISendTimelinePacket> writer = profilingService.GetSendTimelinePacket();
+    BOOST_CHECK(writer != nullptr);
+}
+
 BOOST_AUTO_TEST_SUITE_END()