C++ 不同的数据包,联合-是否正确使用\verify?
Documentation有一个简单的示例“序列化非序列化”和一个数据包。(我没有找到更多的例子) 如果我有许多数据包结构,我需要使用union?还是这个坏主意 在程序中使用收入包之前,我需要如何验证收入包 方法验证-验证数据包所需的一切?(结构正确,允许使用字段)C++ 不同的数据包,联合-是否正确使用\verify?,c++,flatbuffers,C++,Flatbuffers,Documentation有一个简单的示例“序列化非序列化”和一个数据包。(我没有找到更多的例子) 如果我有许多数据包结构,我需要使用union?还是这个坏主意 在程序中使用收入包之前,我需要如何验证收入包 方法验证-验证数据包所需的一切?(结构正确,允许使用字段) 尝试将map[body\u type](body)(不确定该操作的目的是什么?)替换为if(body\u type==PacketBody\u body1){…reinterpret\u cast(body)…} 此外,验证器用于检
尝试将
map[body\u type](body)
(不确定该操作的目的是什么?)替换为if(body\u type==PacketBody\u body1){…reinterpret\u cast(body)…}
此外,验证器用于检测数据损坏,如果您有正确的数据包,我不会使用它进行测试。您不需要重复标题上写的内容,正如第一段所述,在问题中添加标题是有效的,我更喜欢看到“标题中的问题”之类的内容。但是,第一段不应仅包含标题;请参阅的“在发布任何代码之前介绍问题”部分。(标题是一个引人注目的摘要,而段落应该解释细节。)如果写一个更完整的摘要会导致问题的措辞有所改变,那就更好了。对不起,我扩展了我的问题谢谢你的回答,我将我的问题扩展到了对其表述的评论上。“测试”是什么意思?方法验证只检查结构,不检查允许的字段?(因此,使用地图[车身类型](车身)是不安全的)?
include "body1.fbs";
include "body2.fbs";
union PacketBody {
body1,
body2
}
table Packet {
body: PacketBody
}
root_type Packet;
auto request = Packet::GetPacket(&buf);
auto ver = new flatbuffers::Verifier(buf, len);
if(request->Verify(*ver) {
//good ?
auto body = request->body();
auto body_type = request->body_type();
map[body_type](body);
} else {
//wrong packet
}