如何从 proto buf UDP 数据流中获取扩展类型
How to get extension type from proto buf UDP data stream
我正在使用 java 和支持扩展的 proto buf 读取 UDP 流。
在任何给定时间,我可以获得三种不同类型的数据,它们对应于三种不同类型的原型文件。
我正在使用
registry.add(CpuUtilization.cpuUtilExt);
registry.add(NpuUtilization.npuExt);
registry.add(Optics.opticsExt);
所有三个原型文件都使用下面提到的扩展语法
extend NetworksSensors {
optional PFEHeapInfo pfeHeapInfoExt = 1;
}
extend NetworksSensors {
optional NpuUtilization npuExt = 2;
}
extend NetworksSensors {
optional CpuUtilization cpuUtilExt = 3;
}
我正在做的是创建三个独立的方法,并根据 header 字段中的值处理每种类型传感器的数据。
有没有一种方法可以根据即将到来的扩展数据来决定调用哪个方法?
可能描述符中的某些字段可以提供帮助,但我不知道如何使用它。有什么想法吗?
我找到了一种方法来检查数据中是否有特定的扩展名,但仍然需要弄清楚如何从 networksSensors 对象中获取扩展名对象。
networksSensors.hasExtension(FirewallClass.firewallExt)
FirewallClass class 是使用 protoc 编译器自动生成的 class。
我正在使用 java 和支持扩展的 proto buf 读取 UDP 流。
在任何给定时间,我可以获得三种不同类型的数据,它们对应于三种不同类型的原型文件。
我正在使用
registry.add(CpuUtilization.cpuUtilExt);
registry.add(NpuUtilization.npuExt);
registry.add(Optics.opticsExt);
所有三个原型文件都使用下面提到的扩展语法
extend NetworksSensors {
optional PFEHeapInfo pfeHeapInfoExt = 1;
}
extend NetworksSensors {
optional NpuUtilization npuExt = 2;
}
extend NetworksSensors {
optional CpuUtilization cpuUtilExt = 3;
}
我正在做的是创建三个独立的方法,并根据 header 字段中的值处理每种类型传感器的数据。
有没有一种方法可以根据即将到来的扩展数据来决定调用哪个方法?
可能描述符中的某些字段可以提供帮助,但我不知道如何使用它。有什么想法吗?
我找到了一种方法来检查数据中是否有特定的扩展名,但仍然需要弄清楚如何从 networksSensors 对象中获取扩展名对象。
networksSensors.hasExtension(FirewallClass.firewallExt)
FirewallClass class 是使用 protoc 编译器自动生成的 class。