C++/Flatbuffers - 验证 table 不是 root_type
C++/Flatbuffers - Verify table which is not root_type
这是我的脸书:
namespace Vibranium;
enum LOGIN_STATUS : int {
INVALID_CREDENTIALS,
LOGIN_SUCCESS,
ACCOUNT_LOGGEDIN,
ACCOUNT_INGAME,
ACCOUNT_BANNED,
ACCOUNT_LOCKED
}
table LoginRequest{
email:string;
password:string;
client_hash:string;
connection_id:uint32;
}
table LoginResponse{
account_id:uint32;
status:LOGIN_STATUS;
}
root_type LoginRequest;
这会生成名为 VerifyLoginRequestBuffer
的函数,但是没有名为 VerifyLoginResponseBuffer
的函数,所以我现在不知道如何验证 LoginResponse
.
我的问题是:
我如何在 C++ 中验证未标记为 root_type
的 table?
如果可能的话,任何人都可以写一个例子作为答案吗?
P.S。
我尝试创建一些独特的函数来检查所有可能的类型,如下所示:
template<typename T>
bool VerifyBuffer(flatbuffers::Verifier &verifier){
verifier.VerifyBuffer<T>(nullptr);
}
所以我的计划是像这样提供 LoginResponse
:
bool check = VerifyBuffer<Vibranium::LoginResponse>(&verifier);
然而 LoginResponse
继承自 private flatbuffers::Table
这是一个问题。所以我被困在这里了。
像VerifyLoginRequestBuffer
这样的函数是为路由类型生成的“便利”函数。您可以查看它们的(小)实现,并为任何其他 table 类型调用完全相同的函数。
这是我的脸书:
namespace Vibranium;
enum LOGIN_STATUS : int {
INVALID_CREDENTIALS,
LOGIN_SUCCESS,
ACCOUNT_LOGGEDIN,
ACCOUNT_INGAME,
ACCOUNT_BANNED,
ACCOUNT_LOCKED
}
table LoginRequest{
email:string;
password:string;
client_hash:string;
connection_id:uint32;
}
table LoginResponse{
account_id:uint32;
status:LOGIN_STATUS;
}
root_type LoginRequest;
这会生成名为 VerifyLoginRequestBuffer
的函数,但是没有名为 VerifyLoginResponseBuffer
的函数,所以我现在不知道如何验证 LoginResponse
.
我的问题是:
我如何在 C++ 中验证未标记为 root_type
的 table?
如果可能的话,任何人都可以写一个例子作为答案吗?
P.S。 我尝试创建一些独特的函数来检查所有可能的类型,如下所示:
template<typename T>
bool VerifyBuffer(flatbuffers::Verifier &verifier){
verifier.VerifyBuffer<T>(nullptr);
}
所以我的计划是像这样提供 LoginResponse
:
bool check = VerifyBuffer<Vibranium::LoginResponse>(&verifier);
然而 LoginResponse
继承自 private flatbuffers::Table
这是一个问题。所以我被困在这里了。
像VerifyLoginRequestBuffer
这样的函数是为路由类型生成的“便利”函数。您可以查看它们的(小)实现,并为任何其他 table 类型调用完全相同的函数。