|
|
@@ -6,9 +6,10 @@
|
|
6
|
6
|
- [1.1. Ziel](#11-ziel)
|
|
7
|
7
|
- [1.2. Protokollbeschreibung](#12-protokollbeschreibung)
|
|
8
|
8
|
- [1.2.1 STAGE](#121-stage)
|
|
|
9
|
+ - [1.2.3 CONTROL](#123-control)
|
|
9
|
10
|
- [1.2.2 RETRIEVE](#122-retrieve)
|
|
10
|
11
|
- [2.1 Aufgabe](#21-aufgabe)
|
|
11
|
|
- - [2.2.1 Crate](#221-crate)
|
|
|
12
|
+ - [2.2.1 Bibliothek](#221-bibliothek)
|
|
12
|
13
|
- [2.2.2 Testabdeckung](#222-testabdeckung)
|
|
13
|
14
|
- [2.2.3 Fehlerbehandlung und Rückgabetyp](#223-fehlerbehandlung-und-rückgabetyp)
|
|
14
|
15
|
- [3.1 Hilfen](#31-hilfen)
|
|
|
@@ -20,12 +21,12 @@ Ziel dieser Aufgabe ist es, einen Parser für ein simples Protokoll zu
|
|
20
|
21
|
implementieren, das in den folgenden Aufgaben verwendet wird.
|
|
21
|
22
|
|
|
22
|
23
|
Das Protokoll beschreibt das Bereitstellen und Abrufen von Daten von
|
|
23
|
|
-einem Server.
|
|
|
24
|
+einem Server sowie die Steuerung des Servers.
|
|
24
|
25
|
|
|
25
|
26
|
## 1.2. Protokollbeschreibung
|
|
26
|
27
|
|
|
27
|
|
-Das Protokoll kennt 2 Kommandos: Bereitstellen und Abrufen. Weitere
|
|
28
|
|
-Kommandos sind zunächst nicht zugelassen. Das Protokoll arbeitet
|
|
|
28
|
+Das Protokoll kennt 3 Kommandos: Bereitstellen, Abrufen und Steuern.
|
|
|
29
|
+Weitere Kommandos sind zunächst nicht zugelassen. Das Protokoll arbeitet
|
|
29
|
30
|
zeilenweise, d.h. ein newline ('\\n') beendet das Kommando.
|
|
30
|
31
|
|
|
31
|
32
|
Die Kommandos folgen diesem Format:
|
|
|
@@ -48,6 +49,20 @@ Beispiele:
|
|
48
|
49
|
STAGE Hallo, hier ist eine kleine Nachricht!\n
|
|
49
|
50
|
STAGE \n
|
|
50
|
51
|
|
|
|
52
|
+### 1.2.3 CONTROL
|
|
|
53
|
+
|
|
|
54
|
+Das CONTROL-Kommando überträgt eine CONTROL Kommando an den Server. Das
|
|
|
55
|
+Kommando darf selbst keine newline enthalten. Es ist erlaubt, eine
|
|
|
56
|
+_leeres_ Kommando zu schicken.
|
|
|
57
|
+
|
|
|
58
|
+Beispiele:
|
|
|
59
|
+
|
|
|
60
|
+ CONTROL hello
|
|
|
61
|
+ CONTROL exit
|
|
|
62
|
+ CONTROL Beam me up!
|
|
|
63
|
+ CONTROL \n
|
|
|
64
|
+
|
|
|
65
|
+
|
|
51
|
66
|
### 1.2.2 RETRIEVE
|
|
52
|
67
|
|
|
53
|
68
|
Das RETRIEVE-Kommando entnimmt eine Nachricht. Es erhält keine Daten.
|
|
|
@@ -76,12 +91,10 @@ pub fn parse(message: &str) -> ... {
|
|
76
|
91
|
}
|
|
77
|
92
|
```
|
|
78
|
93
|
|
|
79
|
|
-### 2.2.1 Crate
|
|
|
94
|
+### 2.2.1 Bibliothek
|
|
80
|
95
|
|
|
81
|
|
-Implementieren Sie den Parser als eigene Crate, die Sie dann in den
|
|
82
|
|
-weiteren Aufgaben einbinden können, statt den Code zu kopieren. Sie
|
|
83
|
|
-können diese Crate später entweder auf Github veröffentlichen oder über
|
|
84
|
|
-Pfade einbinden.
|
|
|
96
|
+Implementieren Sie den Parser als Bibliothek, die Sie dann in den
|
|
|
97
|
+weiteren Aufgaben verwenden können.
|
|
85
|
98
|
|
|
86
|
99
|
### 2.2.2 Testabdeckung
|
|
87
|
100
|
|