libki/include/ki/protocol/dml/MessageManager.h

41 lines
1.0 KiB
C++

#pragma once
#include "MessageModule.h"
#include "MessageBuilder.h"
#include "../../dml/Record.h"
#include <string>
namespace ki
{
namespace protocol
{
namespace dml
{
class MessageManager
{
public:
MessageManager();
~MessageManager();
static MessageManager &get_singleton();
const MessageModule &load_module(std::string filepath);
const MessageModule &get_module(uint8_t service_id) const;
const MessageModule &get_module(std::string protocol_type) const;
MessageBuilder &build_message(uint8_t service_id, uint8_t message_type) const;
MessageBuilder &build_message(uint8_t service_id, std::string message_name) const;
MessageBuilder &build_message(std::string service_type, uint8_t message_type) const;
MessageBuilder &build_message(std::string service_type, std::string message_name) const;
const Message *from_binary(std::istream &istream);
private:
static MessageManager *g_instance;
MessageModuleList m_modules;
MessageModuleServiceIdMap m_service_id_map;
MessageModuleProtocolTypeMap m_protocol_type_map;
};
}
}
}