在 protobuf 消息中定义嵌套的消息之一



我试图在 protobuf 消息中定义嵌套的消息之一。我们可以在 protobuf 消息中嵌套其中一条消息吗?

谢谢

您可以使用包含消息的"one"定义消息。这些消息也可能包含"之一"。

例如,如果我有一个控制我的硬件的 API,由冷却器和注射器泵组成,并且它们各自支持自己的操作,可能每个操作都有不同的参数,我的 API 允许对单个设备发出单个命令,并强制执行仅使用正确的参数:

syntax="proto3";
message ChillerSetTemperature {
    int32 temperature=1;
}
message ChillerGetTemperature {
    bool noArg=1;
}
message Chiller {
    oneof command {
        ChillerSetTemperature Set = 1;
        ChillerGetTemperature Get = 2;
    }
}
message SyringePumpAspirate {
    int32 volume = 1;
    int32 speed = 2;
}
message SyringePumpDispense {
    int32 volume = 1;
    int32 speed = 2;
}
message SyringePumpSelectPort {
    int32 position=1;
}
message Syringe {
    oneof command {
        SyringePumpAspirate Aspirate = 1;
        SyringePumpDispense Dispense = 2;
        SyringePumpSelectPort SelectPort = 3;
    }
}
message Action {
    oneof device {
        Syringe syringe = 1;
        Chiller chiller = 2;
    }
}

最新更新