Nenhuma descrição
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

README.md 3.0KB

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 sowie die Steuerung des Servers.

1.2. Protokollbeschreibung

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.

1.2.1 STAGE

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

1.2.3 CONTROL

Das CONTROL-Kommando überträgt eine CONTROL Kommando an den Server. Das Kommando darf selbst keine newline enthalten. Es ist erlaubt, eine leeres Kommando zu schicken.

Beispiele:

CONTROL hello
CONTROL exit
CONTROL Beam me up!
CONTROL \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 Bibliothek

Implementieren Sie den Parser als Bibliothek, die Sie dann in den weiteren Aufgaben verwenden können.

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.