0

我正在使用支持扩展的 java 和 proto buf 读取 UDP 流。

在任何给定时间,我都可以获得三种不同类型的数据,它们对应于三种不同类型的 proto 文件。

我在用

            registry.add(CpuUtilization.cpuUtilExt);
            registry.add(NpuUtilization.npuExt);
            registry.add(Optics.opticsExt);

所有三个 proto 文件都使用下面提到的语法进行扩展

 extend NetworksSensors {
        optional PFEHeapInfo pfeHeapInfoExt = 1;
    }
    extend NetworksSensors {
        optional NpuUtilization npuExt = 2;
    }
    extend NetworksSensors {
        optional CpuUtilization cpuUtilExt = 3;
    }

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

有没有办法我可以根据即将到来的扩展数据来决定调用哪个方法?

可能是描述符中的某些字段可以提供帮助,但我不知道如何使用它。任何想法?

4

1 回答 1

0

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

网络传感器.hasExtension(FirewallClass.firewallExt)

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

于 2016-04-26T00:57:19.203 回答