Я читаю поток UDP, используя java и proto buf, который поддерживает расширение.
В любой момент времени я могу получить три разных типа данных, которые соответствуют трем разным типам протофайлов.
Я использую
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;
}
Что я делаю, так это создаю три отдельных метода и обрабатываю данные для каждого типа датчика на основе значения внутри поля заголовка.
Есть ли способ решить, какой метод вызывать на основе поступающих данных расширения?
Может быть, какое-то поле из дескриптора может помочь, но я не знаю, как его использовать. Есть идеи?