2016-04-22 12 views
0

Ich lese UDP-Stream mit Java und Proto Buf, die Erweiterung unterstützt.So erhalten Sie Erweiterungstyp von Proto Buf UDP-Datenstrom

Zu jeder Zeit kann ich drei verschiedene Arten von Daten erhalten, die drei verschiedenen Arten von Proto-Dateien entspricht.

I

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

Alle drei Proto-Dateien verwende werden für die Erweiterung unter Erwähnung Syntax

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

Was ich tue, ist drei separate Methoden erstellen und die Daten für jede Art von verarbeiten Sensor basierend auf dem Wert im Header-Feld.

Gibt es einen Weg, ich kann entscheiden, welche Methode auf der Grundlage der Erweiterung Daten aufrufen, die kommt?

Kann einige Feld von Deskriptor helfen, aber ich weiß nicht, das zu verwenden. Irgendeine Idee?

Antwort

0

Ich habe einen Weg gefunden, um zu überprüfen, ob Daten spezifische Erweiterung haben oder nicht, aber immer noch herauszufinden, wie Extension-Objekt von networksSensors Objekt erhalten.

networksSensors.hasExtension (FirewallClass.firewallExt)

FirewallClass Klasse ist automatisch generierten Klasse verwenden Protoc Compilers.