aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/ConnectionAcknowledgedCommandHandler.cpp
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2019-10-09 16:47:04 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-10-09 17:44:11 +0100
commitd0613b56cea7eba0604e0548bddffd773a4eb554 (patch)
tree18e5a28c346018340910c456eedd56717ab01c9c /src/profiling/ConnectionAcknowledgedCommandHandler.cpp
parent09ca49cdcfbe377da979a19df9bcdb7cbffc7b50 (diff)
downloadarmnn-d0613b56cea7eba0604e0548bddffd773a4eb554.tar.gz
IVGCVSW-3937 Improve the Connection Acknowledged Handler
* The Connection Acknowledged Handler should report an error is it's called while in a wrong state * Stopping the threads in the ProfilingService before having to start them again * Updated the unit tests to check the changes * Removed unnecessary Packet.cpp file * Fixed memory leak Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I8c4d33b4d97994df86fe6c9f8c659f880ec64c16
Diffstat (limited to 'src/profiling/ConnectionAcknowledgedCommandHandler.cpp')
-rw-r--r--src/profiling/ConnectionAcknowledgedCommandHandler.cpp35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/profiling/ConnectionAcknowledgedCommandHandler.cpp b/src/profiling/ConnectionAcknowledgedCommandHandler.cpp
index f90b601b7e..9d2d1a2bd2 100644
--- a/src/profiling/ConnectionAcknowledgedCommandHandler.cpp
+++ b/src/profiling/ConnectionAcknowledgedCommandHandler.cpp
@@ -7,6 +7,8 @@
#include <armnn/Exceptions.hpp>
+#include <boost/format.hpp>
+
namespace armnn
{
@@ -15,15 +17,34 @@ namespace profiling
void ConnectionAcknowledgedCommandHandler::operator()(const Packet& packet)
{
- if (!(packet.GetPacketFamily() == 0u && packet.GetPacketId() == 1u))
+ ProfilingState currentState = m_StateMachine.GetCurrentState();
+ switch (currentState)
{
- throw armnn::InvalidArgumentException(std::string("Expected Packet family = 0, id = 1 but received family = ")
- + std::to_string(packet.GetPacketFamily())
- + " id = " + std::to_string(packet.GetPacketId()));
+ case ProfilingState::Uninitialised:
+ case ProfilingState::NotConnected:
+ throw RuntimeException(boost::str(boost::format("Connection Acknowledged Handler invoked while in an "
+ "wrong state: %1%")
+ % GetProfilingStateName(currentState)));
+ case ProfilingState::WaitingForAck:
+ // Process the packet
+ if (!(packet.GetPacketFamily() == 0u && packet.GetPacketId() == 1u))
+ {
+ throw armnn::InvalidArgumentException(boost::str(boost::format("Expected Packet family = 0, id = 1 but "
+ "received family = %1%, id = %2%")
+ % packet.GetPacketFamily()
+ % packet.GetPacketId()));
+ }
+
+ // Once a Connection Acknowledged packet has been received, move to the Active state immediately
+ m_StateMachine.TransitionToState(ProfilingState::Active);
+
+ break;
+ case ProfilingState::Active:
+ return; // NOP
+ default:
+ throw RuntimeException(boost::str(boost::format("Unknown profiling service state: %1%")
+ % static_cast<int>(currentState)));
}
-
- // Once a Connection Acknowledged packet has been received, move to the Active state immediately
- m_StateMachine.TransitionToState(ProfilingState::Active);
}
} // namespace profiling