MP 修改定义了 im_msg_data 数据包
This commit is contained in:
59
MP/IMDataPacket.cpp
Normal file
59
MP/IMDataPacket.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// 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, 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 为 16bit
|
||||
std::string temp;
|
||||
|
||||
// 判断是否超过数据包限制大小 一个包 大概0.06MB
|
||||
if (mph->ByteSizeLong() + data->ByteSizeLong() > 65535) {
|
||||
return "超过数据包限制大小,无法构造,长度请低于65535, 或者分包";
|
||||
}
|
||||
|
||||
// L
|
||||
// temp.push_back(mph->ByteSizeLong());
|
||||
if (mph->ByteSizeLong() + data->ByteSizeLong() <= 255) {
|
||||
temp.push_back(0);
|
||||
temp.push_back(mph->ByteSizeLong());
|
||||
} else {
|
||||
short len = mph->ByteSizeLong() + data->ByteSizeLong();
|
||||
char LTV_L[2];
|
||||
memcpy(LTV_L, &len, sizeof(LTV_L));
|
||||
temp.append(LTV_L);
|
||||
}
|
||||
|
||||
// T
|
||||
mph->AppendToString(&temp);
|
||||
// V
|
||||
data->AppendToString(&temp);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user