#pragma once #include "protocol/Protocol.h" #include #include namespace td { namespace protocol { class PacketHandler; class PacketDispatcher { private: std::map> m_Handlers; public: PacketDispatcher() = default; PacketDispatcher(const PacketDispatcher& rhs) = delete; PacketDispatcher& operator=(const PacketDispatcher& rhs) = delete; PacketDispatcher(PacketDispatcher&& rhs) = delete; PacketDispatcher& operator=(PacketDispatcher&& rhs) = delete; void Dispatch(Packet* packet); void RegisterHandler(PacketType type, PacketHandler* handler); void UnregisterHandler(PacketType type, PacketHandler* handler); void UnregisterHandler(PacketHandler* handler); }; } // namespace protocol } // namespace td