2016-04-22 64 views
0

我正在使用支持擴展的java和proto buf讀取UDP流。如何從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

我找到了一種方法來檢查數據是否具有特定的擴展名,但是仍然需要知道如何從networksSensors對象中獲取擴展對象。

networksSensors.hasExtension(FirewallClass.firewallExt)

FirewallClass類是使用protoc編譯器自動生成的類。