【发布时间】:2021-04-30 18:16:32
【问题描述】:
我遇到了一种情况,即 grpc 通信的另一端与他们的版本不同步。因此,我的上级希望我添加一个字段,如果对方在短时间内(如两周)填写或不填写,该字段将起作用
我相信我可以通过将它添加到原始消息的末尾来做到这一点,这样其他字段的索引就不会改变。从我用谷歌搜索的内容来看,可选字段在 3.15 版本之前不可用,所以我必须使用解决方法。
向我描述的解决方法是使用oneof。但是,我不是 100% 确定那是什么样子。所有示例都单独显示了 oneof 字段。属于 oneof 值的索引是否与属于消息其余部分的索引缩进?
message TestMessage {
string somefield = 1;
int someotherfield = 2;
oneof mynewoptionalfield
{
string mynewfield = ???? Does this have to be 3 or is it 1?
int ifihadanother = ???? Does this need to be 4 or 2?
}
}
问题:
- 我使用的索引是什么?标记是
- 当另一方不打算重新编译和部署对 protofile 的更改时,这是否是正确的解决方法?
- 然后如何检查该字段是否填写在我的 C++ 代码中?
【问题讨论】:
标签: protocol-buffers grpc