是否可以为Protocol Buffer中的字段定义数值范围?

问题描述 投票:0回答:2

我生活在一个非常安全/关键的 Ada-ic 环境中,并且已经养成了定义良好且有界的类型定义的习惯。我还遇到了很多 ASN1 使用/传播者。

我周围的一些人将 ASN1 定义为优于协议缓冲区的关键功能之一是 能够定义并因此检查数据范围

那么,

  • protocol buffers 真的没有任何范围定义吗 系统?
  • 协议缓冲区顶部是否有任何方法可以 提供这样的功能吗?

常见的数字类型定义,例如

int32
int64
超出了此处的范围。


我尝试过的解决方案/解决方案查找过程:
我阅读了这篇Google概述,发现没有提及任何数据范围定义。除了有关枚举管理/表示的功能以及一些排序功能之外。

为了提供一些其他参考,我听说/阅读了下面的链接,并了解了 Ada 实施项目。

types protocol-buffers ada
2个回答
11
投票

协议缓冲区确实没有任何内置的数值范围机制。

但是语法确实支持定义自定义选项:

extend google.protobuf.FieldOptions {
     optional int32 maxval = 50001;
     optional int32 minval = 50002;
}

message MyMessage {
     required int32 month = 1 [(minval) = 1, (maxval) = 12];
}

根据使用的库,可以使用反射在运行时访问这些库,也可以使用自定义代码生成器自动生成验证代码。


3
投票

protocol buffers 真的没有任何范围定义系统吗?

是的

协议缓冲区之上是否有任何方法可以提供这样的功能?

编写代码来检查值是否在预期范围内

© www.soinside.com 2019 - 2024. All rights reserved.