summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/include/utilities.h5
-rw-r--r--server/src/utilities.cpp26
2 files changed, 31 insertions, 0 deletions
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_);
+}