#pragma once #include "MessageTemplate.h" #include #include #include #include namespace ki { namespace protocol { namespace dml { class MessageModule { public: MessageModule(uint8_t service_id, std::string protocol_type); ~MessageModule(); uint8_t get_service_id() const; void set_service_id(uint8_t service_id); std::string get_protocol_type() const; void set_protocol_type(std::string protocol_type); std::string get_protocol_desription() const; void set_protocol_description(std::string protocol_description); const MessageTemplate &add_message_template(std::string name, uint8_t type, ki::dml::Record *record); const MessageTemplate &get_message_template(uint8_t type); const MessageTemplate &get_message_template(std::string name); MessageBuilder &build_message(uint8_t message_type) const; MessageBuilder &build_message(std::string message_name) const; private: uint8_t m_service_id; std::string m_protocol_type; std::string m_protocol_description; std::vector m_templates; std::map m_message_name_map; std::map m_message_type_map; }; typedef std::vector MessageModuleList; typedef std::map MessageModuleServiceIdMap; typedef std::map MessageModuleProtocolTypeMap; } } }