如何从proto buf UDP数据流获取扩展类型

时间:2016-04-22 00:48:11

标签: java proto

我正在使用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;
    }

我正在做的是创建三个单独的方法,并根据标题字段内的值处理每种传感器的数据。

有没有办法可以根据即将推出的扩展数据决定调用哪种方法?

可能来自描述符的某些字段可以提供帮助,但我不知道使用它。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了一种检查数据是否具有特定扩展名的方法,但仍然需要弄清楚如何从networksSensors对象获取Extension对象。

networksSensors.hasExtension(FirewallClass.firewallExt)

FirewallClass类是使用protoc编译器自动生成的类。