// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #include "CommandHandlerRegistry.hpp" #include #include namespace armnn { namespace profiling { void CommandHandlerRegistry::RegisterFunctor(CommandHandlerFunctor* functor, uint32_t familyId, uint32_t packetId, uint32_t version) { BOOST_ASSERT_MSG(functor, "Provided functor should not be a nullptr"); CommandHandlerKey key(familyId, packetId, version); registry[key] = functor; } void CommandHandlerRegistry::RegisterFunctor(CommandHandlerFunctor* functor) { BOOST_ASSERT_MSG(functor, "Provided functor should not be a nullptr"); RegisterFunctor(functor, functor->GetFamilyId(), functor->GetPacketId(), functor->GetVersion()); } CommandHandlerFunctor* CommandHandlerRegistry::GetFunctor(uint32_t familyId,uint32_t packetId, uint32_t version) const { CommandHandlerKey key(familyId, packetId, version); // Check that the requested key exists if (registry.find(key) == registry.end()) { throw armnn::InvalidArgumentException( boost::str(boost::format("Functor with requested PacketId=%1% and Version=%2% does not exist") % packetId % version)); } CommandHandlerFunctor* commandHandlerFunctor = registry.at(key); if (commandHandlerFunctor == nullptr) { throw RuntimeException( boost::str(boost::format("Invalid functor registered for PacketId=%1% and Version=%2%") % packetId % version)); } return commandHandlerFunctor; } } // namespace profiling } // namespace armnn