协议缓冲区将单一消息拆分到另一个文件
我使用了看起来像这样的nanopb和一个.proto文件(简化):
syntax = "proto3";
message Type1
{
bool a = 1;
}
message Type2
{
int32 b = 1;
}
message Message
{
int32 id = 1;
oneof oneMessage {
Type1 messageType1 = 2;
Type2 messageType2 = 3;
}
}
我现在需要将onemessage
将其拆分为其他.proto文件并导入。我可以做类似的事情: 文件a.proto:
syntax = "proto3";
import "b.proto"
message Message
{
int32 id = 1;
oneofTypeMessage aMessage = 2;
}
file b.proto
syntax = "proto3";
message Type1
{
bool a = 1;
}
message Type2
{
int32 b = 1;
}
message oneofTypeMessage
{
oneof oneMessage {
Type1 messageType1 = 2;
Type2 messageType2 = 3;
}
}
,但这意味着我无法使用message.messageType1
触发我的消息类型,从而触发了现有源代码中的许多更改。如何将一个部分分为另一个文件而不更改我访问该文件的方式? 我已经尝试在两个文件中声明消息
,但不允许使用。
I use nanopb and a .proto file that looks like this (simplified):
syntax = "proto3";
message Type1
{
bool a = 1;
}
message Type2
{
int32 b = 1;
}
message Message
{
int32 id = 1;
oneof oneMessage {
Type1 messageType1 = 2;
Type2 messageType2 = 3;
}
}
I now need to split the oneMessage
to a different .proto file and import it. I can do something like:
file a.proto:
syntax = "proto3";
import "b.proto"
message Message
{
int32 id = 1;
oneofTypeMessage aMessage = 2;
}
file b.proto
syntax = "proto3";
message Type1
{
bool a = 1;
}
message Type2
{
int32 b = 1;
}
message oneofTypeMessage
{
oneof oneMessage {
Type1 messageType1 = 2;
Type2 messageType2 = 3;
}
}
But this means I can't get to my message types with message.messageType1
, triggering lots of changes in the existing source code. How can I split the oneof part to another file without changing the way I access to it?
I've tried declaring Message
in both files but it is not permitted.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编号
onemessage
是不是消息类型,要从另一个文件导入某些内容,它必须是消息类型。添加一个新的OneFypemessage
将在图中添加一个其他节点,并且与原始数据不兼容。您可以移动
type1
和type2
,但是Oneof
必须保持为was;因此:这是有效的:文件
a.proto
:文件
b.proto
:No.
oneMessage
is not a message type, and to import something from another file, it must be a message type. Adding a newoneofTypeMessage
would add an additional node in the graph, and would not be data-compatible with the original data.You can move
Type1
andType2
, but theoneof
must stay as-was; so: this is valid:file
a.proto
:file
b.proto
: