65 {
66 bsize msg_len =
static_cast<bsize>(proto->ByteSizeLong());
67 char *tmp = new char[msg_len]();
68 if (!proto->SerializeToArray(tmp, static_cast<int>(msg_len))) {
70 return false;
71 }
73 bsize frame_index = 0;
74 uint32_t total_frames =
static_cast<uint32_t
>(msg_len /
FRAME_SIZE +
76
77 while (offset < msg_len) {
80
81 BridgeHeader header;
82 header.SetHeaderVer(0);
83 header.SetMsgName(msg_name);
84 header.SetMsgID(proto->header().sequence_num());
85 header.SetTimeStamp(proto->header().timestamp_sec());
86 header.SetMsgSize(msg_len);
87 header.SetTotalFrames(total_frames);
88 header.SetFrameSize(cpy_size);
89 header.SetIndex(frame_index);
91 hsize header_size = header.GetHeaderSize();
92 Buf buf;
93 buf.buf_ = new char[cpy_size + header_size];
94 buf.buf_len_ = cpy_size + header_size;
95 header.Serialize(buf.buf_, buf.buf_len_);
96 memcpy(buf.buf_ + header_size, tmp + frame_index *
FRAME_SIZE, cpy_size);
97 frames_.push_back(buf);
98 frame_index++;
99 offset += cpy_size;
100 }
102 return true;
103}
constexpr uint32_t FRAME_SIZE