diff --git a/CMakeLists.txt b/CMakeLists.txt index 9af9364..45f290e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ target_include_directories(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME} RapidXML) add_subdirectory("src/dml") +add_subdirectory("src/protocol") option(KI_BUILD_EXAMPLES "Determines whether to build examples." ON) if (KI_BUILD_EXAMPLES) diff --git a/include/ki/protocol/Packet.h b/include/ki/protocol/Packet.h index 79e2bc2..f49a8cd 100644 --- a/include/ki/protocol/Packet.h +++ b/include/ki/protocol/Packet.h @@ -29,7 +29,8 @@ namespace protocol std::ostringstream oss; data.write_to(oss); - m_payload = std::vector(oss.str().c_str(), data.get_size()); + std::string data_string = oss.str(); + m_payload.assign(data_string.begin(), data_string.end()); } template diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt new file mode 100644 index 0000000..2d6393a --- /dev/null +++ b/src/protocol/CMakeLists.txt @@ -0,0 +1,12 @@ +target_sources(${PROJECT_NAME} + PRIVATE + ${PROJECT_SOURCE_DIR}/src/protocol/Packet.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/control/ClientHello.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/control/ServerHello.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/control/Ping.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/dml/Message.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/dml/MessageBuilder.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/dml/MessageManager.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/dml/MessageModule.cpp + ${PROJECT_SOURCE_DIR}/src/protocol/dml/MessageTemplate.cpp +) \ No newline at end of file diff --git a/src/protocol/Packet.cpp b/src/protocol/Packet.cpp new file mode 100644 index 0000000..d78f078 --- /dev/null +++ b/src/protocol/Packet.cpp @@ -0,0 +1,9 @@ +#include "ki/protocol/Packet.h" + +namespace ki +{ +namespace protocol +{ + +} +} diff --git a/src/protocol/control/ClientHello.cpp b/src/protocol/control/ClientHello.cpp new file mode 100644 index 0000000..4edff91 --- /dev/null +++ b/src/protocol/control/ClientHello.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/control/ClientHello.h" + +namespace ki +{ +namespace protocol +{ +namespace control +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/control/Ping.cpp b/src/protocol/control/Ping.cpp new file mode 100644 index 0000000..7f6a0af --- /dev/null +++ b/src/protocol/control/Ping.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/control/Ping.h" + +namespace ki +{ +namespace protocol +{ +namespace control +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/control/ServerHello.cpp b/src/protocol/control/ServerHello.cpp new file mode 100644 index 0000000..8be2f86 --- /dev/null +++ b/src/protocol/control/ServerHello.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/control/ServerHello.h" + +namespace ki +{ +namespace protocol +{ +namespace control +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/dml/Message.cpp b/src/protocol/dml/Message.cpp new file mode 100644 index 0000000..d9a4dab --- /dev/null +++ b/src/protocol/dml/Message.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/dml/Message.h" + +namespace ki +{ +namespace protocol +{ +namespace dml +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/dml/MessageBuilder.cpp b/src/protocol/dml/MessageBuilder.cpp new file mode 100644 index 0000000..aaed66f --- /dev/null +++ b/src/protocol/dml/MessageBuilder.cpp @@ -0,0 +1,38 @@ +#include "ki/protocol/dml/MessageBuilder.h" + +namespace ki +{ +namespace protocol +{ +namespace dml +{ + MessageBuilder::MessageBuilder(uint8_t service_id, uint8_t type) + { + m_message = new Message(service_id, type); + } + + MessageBuilder &MessageBuilder::set_service_id(uint8_t service_id) + { + m_message->set_service_id(service_id); + return *this; + } + + MessageBuilder &MessageBuilder::set_message_type(uint8_t type) + { + m_message->set_type(type); + return *this; + } + + MessageBuilder &MessageBuilder::use_template_record(const ki::dml::Record& record) + { + m_message->set_record(record); + return *this; + } + + Message *MessageBuilder::get_message() const + { + return m_message; + } +} +} +} \ No newline at end of file diff --git a/src/protocol/dml/MessageManager.cpp b/src/protocol/dml/MessageManager.cpp new file mode 100644 index 0000000..ae3703d --- /dev/null +++ b/src/protocol/dml/MessageManager.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/dml/MessageManager.h" + +namespace ki +{ +namespace protocol +{ +namespace dml +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/dml/MessageModule.cpp b/src/protocol/dml/MessageModule.cpp new file mode 100644 index 0000000..9b239fc --- /dev/null +++ b/src/protocol/dml/MessageModule.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/dml/MessageModule.h" + +namespace ki +{ +namespace protocol +{ +namespace dml +{ + +} +} +} \ No newline at end of file diff --git a/src/protocol/dml/MessageTemplate.cpp b/src/protocol/dml/MessageTemplate.cpp new file mode 100644 index 0000000..405de3f --- /dev/null +++ b/src/protocol/dml/MessageTemplate.cpp @@ -0,0 +1,12 @@ +#include "ki/protocol/dml/MessageTemplate.h" + +namespace ki +{ +namespace protocol +{ +namespace dml +{ + +} +} +} \ No newline at end of file