我正在使用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;
}
我正在做的是创建三个单独的方法,并根据标题字段内的值处理每种传感器的数据。
有没有办法可以根据即将推出的扩展数据决定调用哪种方法?
可能来自描述符的某些字段可以提供帮助,但我不知道使用它。有什么想法吗?
答案 0 :(得分:0)
我找到了一种检查数据是否具有特定扩展名的方法,但仍然需要弄清楚如何从networksSensors对象获取Extension对象。
networksSensors.hasExtension(FirewallClass.firewallExt)
FirewallClass类是使用protoc编译器自动生成的类。