在protobuf消息中定义嵌套的oneof消息

时间:2019-04-18 01:08:42

标签: protocol-buffers grpc

我试图在protobuf消息中定义嵌套的oneof消息。我们可以将一个消息嵌套在protobuf消息中吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用包含消息的“oneof”定义消息。这些消息也可能包含“oneof”。

例如,如果我有一个 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;
    }
}