// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "CommandHandlerFunctor.hpp" #include "CommandHandlerKey.hpp" #include #include struct CommandHandlerHash { std::size_t operator() (const CommandHandlerKey& commandHandlerKey) const { std::size_t seed = 0; boost::hash_combine(seed, commandHandlerKey.GetPacketId()); boost::hash_combine(seed, commandHandlerKey.GetVersion()); return seed; } }; class CommandHandlerRegistry { public: CommandHandlerRegistry() = default; void RegisterFunctor(CommandHandlerFunctor* functor, uint32_t packetId, uint32_t version); CommandHandlerFunctor* GetFunctor(uint32_t packetId, uint32_t version) const; private: std::unordered_map registry; };