diff options
-rw-r--r-- | protocol/udm.proto | 2 | ||||
-rw-r--r-- | server/include/utilities.h | 5 | ||||
-rw-r--r-- | server/src/utilities.cpp | 26 |
3 files changed, 32 insertions, 1 deletions
diff --git a/protocol/udm.proto b/protocol/udm.proto index 623f2d5..f762a46 100644 --- a/protocol/udm.proto +++ b/protocol/udm.proto @@ -29,7 +29,7 @@ enum MODULE_UI_ELEMENT_TYPE { UI_INTEGER = 2; //numeric only ui elements (use strings instead ?) UI_PROGRESS_BAR = 3; //generic progress bar UI_WINDOW = 4; //ui window ... - UI_GROUP = 5; //empty ui element to group children together in ui + UI_GROUP = 5; //empty ui element to group children together in ui (tabs can be implemented using this type) } message module_ui_element_info { diff --git a/server/include/utilities.h b/server/include/utilities.h index de97f2f..9becc48 100644 --- a/server/include/utilities.h +++ b/server/include/utilities.h @@ -23,9 +23,14 @@ #include <string> +#include <memory> std::string replace_home_var(const std::string &path); +class server_msg; + +std::shared_ptr<char*> pack_msg(server_msg *msg, int *size); + diff --git a/server/src/utilities.cpp b/server/src/utilities.cpp index 1cebd16..5ea14c1 100644 --- a/server/src/utilities.cpp +++ b/server/src/utilities.cpp @@ -19,6 +19,7 @@ */ #include "utilities.h" +#include "../../protocol/udm.pb.h" std::string replace_home_var(const std::string &path) { @@ -28,3 +29,28 @@ std::string replace_home_var(const std::string &path) return tmp_path; } + + +std::shared_ptr<char*> pack_data(const std::string &buf, int *size_) +{ +// BOOST_LOG_TRIVIAL(debug)<<__FILE__<<":"<<__LINE__<<"\t"<<__func__; + std::shared_ptr<char*> ptr = std::make_shared<char*>(new char[buf.length() + 4]); + int32_t size = buf.length(); + *size_ = size + 4; + (*ptr)[3] = size & 0xff; + (*ptr)[2] = (size>>8) & 0xff; + (*ptr)[1] = (size>>16) & 0xff; + (*ptr)[0] = (size>>24) & 0xff; + char *fck = (*ptr)+4; + memcpy(fck, buf.data(), buf.length()); + return ptr; +} + +std::shared_ptr<char*> pack_msg(server_msg *msg, int *size_) +{ +// BOOST_LOG_TRIVIAL(debug)<<__FILE__<<":"<<__LINE__<<"\t"<<__func__; +// BOOST_LOG_TRIVIAL(trace)<<"packing message:\n"<<cmd.DebugString(); + std::string msg_buf; + msg->SerializeToString(&msg_buf); + return pack_data(msg_buf, size_); +} |