2016-06-22 9 views
2

Ich muss einen Hochleistungs-Java-Client eines vorhandenen Binärprotokolls implementieren. Ich werde Netty benutzen. Da das Protokoll jedoch komplex ist (viele Nachrichtentypen mit vielen Feldern) möchte ich Netty-Code vom Parsing-Code trennen und einen Parser dieses Protokolls aus einem Dokument erzeugen, das dieses Protokoll in einer höheren Abstraktion beschreibt. Ähnlich wie in den Protokollpuffern von Google. Leider kann ich Protobuf nicht verwenden, da mein Protokoll in einem anderen binären Drahtformat ist. Irgendwelche Vorschläge?Generiere einen Parser für ein existierendes Binärprotokoll in Java

Antwort

2

Ich habe es selbst nicht ausprobiert, aber ich glaube, Sie the java binary block parser

für sein könnten suchen die offizielle readme Hier ist ein Beispiel bilden, die zeigt, wie es verwendet werden kann, die die Struktur eines TCP-Header mit einem hohen analysieren Ebene DSL:

final JBBPParser tcpParser = JBBPParser.prepare(
      "skip:34; // skip bytes till the frame\n" 
      + "ushort SourcePort;" 
      + "ushort DestinationPort;" 
      + "int SequenceNumber;" 
      + "int AcknowledgementNumber;" 

      + "bit:1 NONCE;" 
      + "bit:3 RESERVED;" 
      + "bit:4 HLEN;" 

      + "bit:1 FIN;" 
      + "bit:1 SYN;" 
      + "bit:1 RST;" 
      + "bit:1 PSH;" 
      + "bit:1 ACK;" 
      + "bit:1 URG;" 
      + "bit:1 ECNECHO;" 
      + "bit:1 CWR;" 

      + "ushort WindowSize;" 
      + "ushort TCPCheckSum;" 
      + "ushort UrgentPointer;" 
      + "byte [$$-34-HLEN*4] Option;" 
      + "byte [_] Data;" 
); 

final JBBPFieldStruct result = pngParser.parse(tcpFrameStream); 
+0

Ja! Danke Malt, das sieht aus wie die Bibliothek, die ich suche. –