tcp_model.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. * tcp_model.cpp
  3. *
  4. * Created on: 2022年10月6日
  5. * Author: Allen
  6. */
  7. #include "tcp_model.h"
  8. #include "json/json.h"
  9. #include <utils/TimeHelper.h>
  10. #include "base/strings.hpp"
  11. std::string getTcpModelString(TcpModel model){
  12. Json::Value root;
  13. if (model.tid != ""){
  14. root["tid"] = model.tid;
  15. }
  16. // else {
  17. // root["tid"] = base::format("t%d",TimeHelper::getCurrentTime());
  18. // }
  19. root["type"] = model.type;
  20. root["action"] = model.action;
  21. if (model.from_id>0){
  22. root["fromId"] = model.from_id;
  23. }
  24. if (model.to_id>0){
  25. root["toId"] = model.to_id;
  26. }
  27. //拼接data
  28. if (model.json != 0){
  29. root["data"] = model.json;
  30. } else if (model.data!=""){
  31. root["data"] = model.data;
  32. }
  33. Json::FastWriter writer;
  34. const std::string jsonStr = writer.write(root);
  35. //LOGD("string json = %s",jsonStr.c_str());
  36. return jsonStr;
  37. }
  38. TcpModel getTcpModel(byte* inBytes){
  39. //解析json
  40. Json::Reader reader;
  41. Json::Value root;
  42. TcpModel tcpModel;
  43. const char* str = reinterpret_cast<const char*>(inBytes);
  44. if (reader.parse(str, root, false)){
  45. if (root.isMember("tid")){
  46. tcpModel.tid = root["tid"].asString();
  47. }
  48. tcpModel.type = root["type"].asString();
  49. tcpModel.action = root["action"].asString();
  50. if (root.isMember("fromId")){
  51. tcpModel.from_id = root["fromId"].asInt();
  52. }
  53. if (root.isMember("toId")){
  54. tcpModel.to_id = root["toId"].asInt();
  55. }
  56. if (root.isMember("data")){
  57. LOGD("tcp model str2 = %s", str);
  58. if (root["data"].isInt()){
  59. std::string s = std::to_string(root["data"].asInt());
  60. tcpModel.data = s.c_str();
  61. } else if (root["data"].isString()){
  62. std::string s = root["data"].asString();
  63. tcpModel.data = s.c_str();
  64. } else {
  65. tcpModel.json = root["data"];
  66. }
  67. }
  68. } else {
  69. LOGD("can not parse json: %s", str);
  70. tcpModel.type = TcpType::OTHER;
  71. tcpModel.data = str;
  72. }
  73. return tcpModel;
  74. }