KAPITEL 13. DER PROTOKOLLMONITOR
wird deren Inhalt mit dem neuen Wert überschrieben.
shared.set(name, value)
name: Der Name der Variable als Lua String.
value: Ein beliebiger Lua Wert (Zahl, Boolean, String).
Das folgende Beispiel verwendet ein imaginäres Protokoll. Dabei wird jedes
Telegramm mit einem Doppelpunkt ':' eingeleitet und mit einem LF (Linefeed)
beendet.
Stellen Sie sich nun ein spezielles 'Life Ping' Telegramm vor welches lediglich
eine Antwort als 'Lebenszeichen' anfordert. In unserem Beispiel wollen wir so-
wohl die 'Life Ping' Anforderung als auch die zugehörige Antwort aus der Tele-
gramm Darstellung entfernen (REMOVED). Und um das ganze noch etwas zu
verkomplizieren sollen die 'Life Ping' Antworten von anderen Antworten nicht
zu unterscheiden sein.
Ein 'Life Ping' Telegramm sei als leeres Telegramm spezifiziert. D.h. Das Tele-
gramm besteht lediglich aus dem Doppelpunkt ':' gefolgt von einem LF.
Um eine 'Life Ping' Antwort von einer identischen Antwort auseinander halten
zu können, müssen wir den Empfang eines 'Life Ping' in einer Variable ver-
merken. Im Falle der späteren Antwort können wir anhand der gespeicherten
Variable den Anfragetyp unterscheiden.
Da Anfrage (Life Ping) und Antwort aus verschiedenen Datenquellen erfolgen
können, ist die Verwendung des shared Moduls unabdingbar. Hier der ent-
sprechende Code:
Example
1
function s p l i t ( data , i n t v a l , a l t e r , s t r )
2
i f data == 58 then r e t u r n STARTED end
i f data == 10 then
3
i f shared . g e t ( " L i f e P i n g " ) then
4
r e t u r n REMOVED
5
end
6
i f # s t r == 2 then
7
shared . s e t ( " L i f e P i n g " , t r u e )
8
r e t u r n REMOVED
9
else
10
11
shared . s e t ( " L i f e P i n g " , f a l s e )
12
end
13
r e t u r n COMPLETED
14
end
15
r e t u r n MODIFIED
16
end
Das Beispiel erscheint auf den ersten Blick ein wenig konstruiert. Es verdeut-
licht aber sehr schön den Einsatz des shared Moduls zum Austausch von
Informationen zwischen beiden unabhängig arbeitenden Lua Interpretern.
Zeile 2 löst ein neues Telegramm aus sobald ein Doppelpunkt (ASCII Wert ist
58 dezimal) empfangen wurde. Und zwar unabhängig von der Datenrichtung.
Zeile 3 prüft auf das Ende eines Telegramms indem es das aktuelle Datenbyte
mit LF (dezimal 10) vergleicht. Sobald ein vollständiges Telegramm vorliegt
152