diff options
Diffstat (limited to 'src/profiling/CommandHandler.hpp')
-rw-r--r-- | src/profiling/CommandHandler.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/profiling/CommandHandler.hpp b/src/profiling/CommandHandler.hpp new file mode 100644 index 0000000000..598eabde76 --- /dev/null +++ b/src/profiling/CommandHandler.hpp @@ -0,0 +1,61 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "CommandHandlerRegistry.hpp" +#include "IProfilingConnection.hpp" +#include "PacketVersionResolver.hpp" + +#include <atomic> +#include <thread> + +namespace armnn +{ + +namespace profiling +{ + +class CommandHandler +{ +public: + CommandHandler(uint32_t timeout, + bool stopAfterTimeout, + CommandHandlerRegistry& commandHandlerRegistry, + PacketVersionResolver& packetVersionResolver) + : m_Timeout(timeout) + , m_StopAfterTimeout(stopAfterTimeout) + , m_IsRunning(false) + , m_KeepRunning(false) + , m_CommandThread() + , m_CommandHandlerRegistry(commandHandlerRegistry) + , m_PacketVersionResolver(packetVersionResolver) + {} + ~CommandHandler() { Stop(); } + + void Start(IProfilingConnection& profilingConnection); + void Stop(); + + bool IsRunning() const; + + void SetTimeout(uint32_t timeout); + void SetStopAfterTimeout(bool stopAfterTimeout); + +private: + void HandleCommands(IProfilingConnection& profilingConnection); + + std::atomic<uint32_t> m_Timeout; + std::atomic<bool> m_StopAfterTimeout; + std::atomic<bool> m_IsRunning; + std::atomic<bool> m_KeepRunning; + std::thread m_CommandThread; + + CommandHandlerRegistry& m_CommandHandlerRegistry; + PacketVersionResolver& m_PacketVersionResolver; +}; + +} // namespace profiling + +} // namespace armnn |