|
|
7 년 전 | |
|---|---|---|
| .. | ||
| src | 7 년 전 | |
| Cargo.toml | 7 년 전 | |
| README.md | 7 년 전 | |
Ziel dieser Aufgabe ist es, einen Parser für ein simples Protokoll zu implementieren, das in den folgenden Aufgaben verwendet wird.
Das Protokoll beschreibt das Bereitstellen und Abrufen von Daten von einem Server sowie die Steuerung des Servers.
Das Protokoll kennt 3 Kommandos: Bereitstellen, Abrufen und Steuern. Weitere Kommandos sind zunächst nicht zugelassen. Das Protokoll arbeitet zeilenweise, d.h. ein newline (’\n’) beendet das Kommando.
Die Kommandos folgen diesem Format:
<KOMMANDO> [DATEN]\n
Werden keine Daten erwartet, folgt das newline-Zeichen direkt auf das Kommando. Das Kommando muss immer in Großbuchstaben geschrieben werden.
Der Zeilenumbruch ist nicht optional.
Das STAGE-Kommando überträgt eine Nachricht (Order) an den Server. Die Daten dürfen selbst keine newline enthalten. Es ist erlaubt, eine leere Nachricht zu veröffentlichen.
Beispiele:
STAGE Hallo, hier ist eine kleine Nachricht!\n
STAGE \n
Das CONTROL-Kommando überträgt ein CONTROL Kommando an den Server. Das Kommando darf selbst keine newline enthalten. Es ist erlaubt, ein leeres Kommando zu schicken.
Beispiele:
CONTROL hello
CONTROL exit
CONTROL Beam me up!
CONTROL \n
Das RETRIEVE-Kommando entnimmt eine Nachricht. Es erhält keine Daten.
Beispiel:
RETRIEVE\n
Implementieren Sie einen Parser für dieses Protokoll. Der Parser sollte so simpel wie möglich gehalten sein.
Es ist insbesondere erlaubt, die Eingabe als einzelne Zeile zu erwarten. Die Trennung der Eingabe in einzelne Zeilen ist dem aufrufenden Code überlassen.
Enthält der Input mehrere newlines, darf der Rest ohne Fehler verworfen werden.
Folgendes öffentliche Interface ist vorgegeben:
pub fn parse(message: &str) -> ... {
//...
}
Implementieren Sie den Parser als Bibliothek, die Sie dann in den weiteren Aufgaben verwenden können.
Achten Sie auf eine ausreichende Testabdeckung, um möglichst alle illegalen Fälle abzudecken. Achten Sie vor allem darauf, dass keine Daten verloren gehen!
Finden Sie einen geeigneten Rückgabetyp, der sowohl das gefundene Kommando, als auch eventuelle Fehler kommuniziert. Kombinieren Sie dies mit einer geeigneten Darstellung des Kommandos.
Allokieren Sie die gefundenen Daten als String.
Die Dokumentation von str enthält viele wichtige Hinweise.