[英]Protocol buffer split oneof message to a different file
我使用 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;
}
文件 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
獲取我的消息類型,從而觸發現有源代碼中的大量更改。 如何在不改變訪問方式的情況下將 oneof 部分拆分為另一個文件? 我已經嘗試在兩個文件中聲明Message
但這是不允許的。
不, oneMessage
不是消息類型,要從另一個文件導入某些內容,它必須是消息類型。 添加一個新的oneofTypeMessage
將在圖中添加一個額外的節點,並且不會與原始數據數據兼容。
您可以移動Type1
和Type2
,但oneof
必須保持原樣; 所以:這是有效的:
文件a.proto
:
syntax = "proto3";
import "b.proto"
message Message
{
int32 id = 1;
oneof oneMessage {
Type1 messageType1 = 2;
Type2 messageType2 = 3;
}
}
文件b.proto
:
syntax = "proto3";
message Type1
{
bool a = 1;
}
message Type2
{
int32 b = 1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.