C++20-Coroutinen-Tutorial Teil 4: Der Stream-Parser

Ein Parser kann die Vorteile von Coroutinen nutzen und die Datenverarbeitung bei Bedarf pausieren. Das verbessert die Effizienz und erhöht die Code-Lesbarkeit.

Artikel verschenken
vorlesen Druckansicht
Lesezeit: 8 Min.
Von
  • Andreas Fertig
Inhaltsverzeichnis

Parser brechen Daten in verwertbare Stücke auf, analysieren sie und wandeln sie in eine strukturierte Form um, die die Anwendung weiterverwenden kann. Nachdem sich die ersten drei Teile des Tutorials auf Grundlagen und Einsatzzwecke von C++20-Coroutinen konzentriert haben, erläutert der vierte und letzte Teil, wie sich Parser mit Coroutinen vereinfachen lassen.

Als Beispiel dient ein Byte-Stream-Parser nach Andrew Tanenbaum, der ein minimales Protokoll verwendet (siehe Andrew S. Tanenbaum, David J. Wetherall; "Computer Networks", 2011). Das Protokoll besteht aus ESC und einem Start of Frame (SOF): ESC ('H') dient zum Escapen spezieller Bytes (Kommandos) im Datenstrom und SOF (0x10) markiert sowohl den Start als auch das Ende eines Frames.

iX-tract
  • Ein Stream-Parser analysiert Nachrichten in einem Datenstrom und kann so die Netzwerkleistung verbessern.
  • Mit C++-20-Coroutinen kann der Parser die Datenverarbeitung pausieren und später fortsetzen.
  • Weil eine Coroutine eine andere Coroutine aufrufen kann, lassen sich komplexe Parsing-Operationen in kleinere, handhabbare Funktionen unterteilen.
Softwareentwicklung: C++20-Coroutinen
Andreas Fertig
Andreas Fertig

Andreas Fertig beschäftigt sich als Trainer und Berater mit C++. Sein Fokus liegt auf Embedded-Software.

Die Bytefolge ESC, SOF kennzeichnet also den Beginn eines Frames, dessen Ende durch die gleiche Sequenz erkennbar ist. Die hier gezeigte Version ist leicht vereinfacht, oft gibt es unterschiedliche Werte fĂĽr den Start und das Ende eines Frames.

Das war die Leseprobe unseres heise-Plus-Artikels "C++20-Coroutinen-Tutorial Teil 4: Der Stream-Parser". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.