如何判断proto3的oneof字段的值类型?
How to determine the value type of proto3's oneof field?
syntax = "proto3";
package gRPC_Forecaster;
import "google/protobuf/timestamp.proto";
service Forecaster {
rpc Forecast (ProductToForecast) returns (ForecastData) {}
}
message ProductToForecast {
int32 productID = 1;
google.protobuf.Timestamp startDate = 2;
int32 forecastDurationInWeeks = 3;
Model model = 4;
}
message ForecastData {
repeated int32 data = 1;
repeated int32 date = 2;
}
message Model {
oneof model_oneof {
ARIMA arima = 1;
SARIMA sarima = 2;
}
}
message ARIMA{
int32 p = 1;
int32 d = 2;
int32 q = 3;
}
message SARIMA{
int32 p = 1;
int32 d = 2;
int32 q = 3;
int32 p2 = 4;
int32 d2 = 5;
int32 q2 = 6;
}
以上是我的 gRPC 设置的 proto3 代码,其中我有一个 python 服务器和一个 PHP 客户端。
在 PHP 客户端上,我将模型对象设置为 ARIMA。
如何在我的 python 服务器上检查 request.model 的类型是否为 ARIMA 类型?
另外,我希望 PHP 客户端能够将模型设置为 ARIMA 或 SARIMA,我的处理方式是否正确?
syntax = "proto3";
package gRPC_Forecaster;
import "google/protobuf/timestamp.proto";
service Forecaster {
rpc Forecast (ProductToForecast) returns (ForecastData) {}
}
message ProductToForecast {
int32 productID = 1;
google.protobuf.Timestamp startDate = 2;
int32 forecastDurationInWeeks = 3;
Model model = 4;
}
message ForecastData {
repeated int32 data = 1;
repeated int32 date = 2;
}
message Model {
oneof model_oneof {
ARIMA arima = 1;
SARIMA sarima = 2;
}
}
message ARIMA{
int32 p = 1;
int32 d = 2;
int32 q = 3;
}
message SARIMA{
int32 p = 1;
int32 d = 2;
int32 q = 3;
int32 p2 = 4;
int32 d2 = 5;
int32 q2 = 6;
}
以上是我的 gRPC 设置的 proto3 代码,其中我有一个 python 服务器和一个 PHP 客户端。
在 PHP 客户端上,我将模型对象设置为 ARIMA。
如何在我的 python 服务器上检查 request.model 的类型是否为 ARIMA 类型?
另外,我希望 PHP 客户端能够将模型设置为 ARIMA 或 SARIMA,我的处理方式是否正确?