// // Created by dongl on 23-6-20. // #include "IMDataPacket.h" IMDataPacket::IMDataPacket(mp::MP_TYPE type, mp::im::msg_data* data) : Mph(type), MsgData(data) { } IMDataPacket::IMDataPacket(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, mp::MP_SUB_TYPE sessionType, uint64_t messageId, time_t time, uint64_t account, const std::string &imMsgData) : Mph(type), MsgData(subType, sessionType,messageId, time, account, imMsgData) { } IMDataPacket::IMDataPacket(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, uint64_t messageId, time_t time) : Mph(type), MsgData(subType, messageId, time) { } std::string IMDataPacket::packet() { // 包体长度 mph->set_mpb_size(data->ByteSizeLong()); // im_data_packet 的 L 为 8 bit std::string temp; // 判断是否超过数据包限制大小 一个包 大概0.06MB if (mph->ByteSizeLong() + data->ByteSizeLong() > 65535) { return "超过数据包限制大小,无法构造,长度请低于65535, 或者分包"; } /// 顺序 LTV // L 设置 T 的大小 if (mph->ByteSizeLong() <= 255) { // 添加 L temp.push_back(mph->ByteSizeLong()); // T 设置 V 的大小 mph->set_mpb_size(data->ByteSizeLong()); } // T mph->AppendToString(&temp); // V data->AppendToString(&temp); return temp; }