Ingen beskrivning
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

README.md 2.8KB

Homework hw9 task1

Table of Contents

1.1. Ziel

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.

1.2. Protokollbeschreibung

Das Protokoll kennt 2 Kommandos: Bereitstellen und Abrufen. 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.

1.2.1 STAGE

Das STAGE-Kommando überträgt eine Nachricht 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

1.2.2 RETRIEVE

Das RETRIEVE-Kommando entnimmt eine Nachricht. Es erhält keine Daten.

Beispiel:

RETRIEVE\n

2.1 Aufgabe

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 weden.

Folgendes öffentliche Interface ist vorgegeben:

pub fn parse(message: &str) -> ... {
   //...
}

2.2.1 Crate

Implementieren Sie den Parser als eigene Crate, die Sie dann in den weiteren Aufgaben einbinden können, statt den Code zu kopieren. Sie können diese Crate später entweder auf Github veröffentlichen oder über Pfade einbinden.

2.2.2 Testabdeckung

Achten Sie auf eine ausreichende Testabdeckung, um möglichst alle illegalen Fälle abzudecken. Achten Sie vor allem darauf, dass keine Daten verloren gehen!

2.2.3 Fehlerbehandlung und Rückgabetyp

Finden Sie einen geeigneten Rückgabetyp, der das gefundene Kommando, als auch eventuelle Fehler kommuniziert. Kombinieren Sie dies mit einer geeigneten Darstellung des Kommandos.

Allokieren Sie die gefunden Daten als String.

3.1 Hilfen

Die Dokumentation von str enthält viele wichtige Hinweise.