pipe_srv.pl
--help
| --version
pipe_srv.pl
[ --verbose
... | --no_verbose
]
[--base
BASE
] [--req
REQ
] [--resp
RESP
] [--trname
TRNAME
] [--trname
ERRSLEEP
]
Dieses Programm kommuniziert über benannte Pipes mit anderen Prozessen und stellt die Funktionen eines Übersetzers (Herbaer::Translate
, Translate.pm
(Quelltext)) zur Verfügung.
Eine Anfrage erfolgt in einer Zeile über die benannte Pipe REQ
. Die Anfrage wird durch den Doppelpunkt :
in Teile (Methodenname und Argumente) zerlegt. Die Anwort erfolgt ebenfalls in einer Zeile über die benannte Pipe RESP
.
In den Teilen einer Anfrage oder in der Antwort müssen das Zeilenendezeichen und der Doppelpunkt ersetzt („geschützt”) werden. Zunächst wird das Zeichen \
(„Rückschrägstrich”) durch \\
ersetzt. Das Zeichen :
wird durch \c
, das Zeilenendezeichen durch \n
ersetzt.
Die erste Komponente (Zeichen bis zum ersten Doppelpunkt oder bis zum Zeilenende) ist der Name einer Methode des Übersetzers oder eines Befehls für dieses Steuerprogramm. Abhängig vom Namen können oder müssen ein oder mehrere Argumente (durch einen Doppelpunkt vom vorhergehende Text abgegrenzte Zeichenketten) folgen. Die Anfragen werden (normalerweise) vom Perl-Modul Herbaer::Translate::Pipe
, Datei Pipe.pm
(Quelltext), gesendet. Die möglichen Anfragen sind:
trname:TRNAME
Dieser Befehl setzt einen neuen Übersetzernamen. Der Konstruktor Herbaer::Translate::new
wird mit der Zeichenkette NAME
als Argument aufgerufen, wenn ein Übersetzer benötigt wird. Das Übersetzer-Objekt wird erst dann erzeugt, wenn es benötigt wird, also bei den Anforderungen translate
und learn
. Wenn NAME
vom bisherigen Namen abweicht und ein Übersetzer-Objekt existiert, dann wird die Methode finish
aufgerufen und das Übersetzer-Objekt freigegeben.
translate:TEXT
:SRL
:TGL
Die Anfrage ruft die Methode translate
des Übersetzers auf. Der Text TEXT
wird aus der Sprache SRL
in die Sprache TGL
übersetzt. Die Antwort ist der übersetzte Text oder die leere Zeichenkette, falls der Übersetzer den Text nicht übersetzen kann. Falls nötig, wird der Übersetzer neu angelegt.
learn:TEXT
:SRL
:TGL
:TRTEXT
Diese Anfrage ruft die Methode learn
des Übersetzers auf. Der Übersetzer wird bei Bedarf angelegt. Er lernt, dass die Übersetzung des Textes TEXT
aus der Sprache SRL
in die Sprache TGL
der Text TRTEXT
ist. Die Antwort ist OK
, es sei denn, der Übersetzer kann nicht angelegt werden. In diesem Fall ist die Antwort ERROR no translator
.
finish
Wenn ein Übersetzer-Objekt existiert, wird dessen Methode finish
aufgerufen. Der Übersetzer kann dann (z.B.) die neu gelernten Übersetzungen dauerhaft speichern. Die Antwort ist OK
. Falls kein Übersetzer-Objekt existiert, ist die Antwort WARNING no translator
.
translator_name
Wenn ein Übersetzer-Objekt existiert, wird dessen Methode translator_name
aufgerufen. Die Antwort ist die Zeichenfolge OK
, wobei der Platzhalter TRANSLATOR_NAME
TRANSLATOR_NAME
für das Ergibnis der Methode translator_name
steht. Falls kein Übersetzer-Objekt existiert, ist die Antwort WARNING no translator
.
stop
Die Anfrage ist ein Befehl an diesen Dienst-Prozess, sich zu beenden. Wenn ein Übersetzer-Objekt existiert, wird dessen Methode finish
aufgerufen.
Diese Anfrage wird normalerweise vom Programm pipe_srv_stop.pl
(Quelltext) gesendet.
verbose
Erhöht den Umfang der Meldungen dieses Prozesses nach STDERR. Diese Anfrage entspricht der Befehlszeilen-Option --verbose
.
silent
Unterbindet Meldungen des MAIN-Moduls nach STDERR. Diese Anfrage entspricht der Befehlszeilen-Option --no_verbose
.
Die Werte der Platzhalter BASE
, REQ
, RESP
und TRNAME
können die Platzhalter
, ${base}
, ${req}
, ${resp}
und ${trname}
für die Werte der (anderen) Platzhalter enthalten. Zum Einsetzen der Platzhalterwerte dient das Modul ${errsleep}
Herber::Replace
(Replace.pm
(Quelltext)).
--help
Gibt eine kurze Hilfe mit den aktuellen Einstellungen aus
--version
Gibt kurze Hinweise zum Programm und die Version aus.
--verbose
Meldungen über den Ablauf, alle Anfragen und die Antworten werden auch nach STDERR ausgegeben.
--no_verbose
Unterdrückt die Ausgabe von Meldungen nach STDERR. Die Optionen --verbose
und --no_verbose
werden der Reihe nach ausgewertet.
--base
BASE
Die Werte der Platzhalter REQ
, RESP
und TRNAME
können Die Zeichenfolge
enthalten. Die Zeichenfolgen ${base}
wird durch den Wert von ${base}
BASE
ersetzt.
--req
REQ
REQ
ist der Dateipfad der benannten Pipe, über die in UTF-8-Kodierung die Anfragen gestellt werden. Das Verzeichnis muss existieren.
--resp
RESP
RESP
ist der Dateipfad der benannten Pipe, über die in UTF-8-Kodierung die Antworten gesendet werden. Das Verzeichnis muss existierten.
--trname
TRNAME
TRNAME
ist der Name des Übersetzers, der gestartet wird, wenn eine translate
-Anforderung vor der ersten trname
-Anforderung erfolgt.
--errsleep
ERRSLEEP
Wenn eine Anfrage nicht gelesen werden kann, wartet der Übersetzerprozess ERRSLEEP
Sekunden, bevor er wieder versucht, eine Anfrage zu lesen.
Das Programm ist mit Perl Version 5.10.1 entwickelt. Es benutzt die folgenden Module:
Herbaer::Readargs
Die Funktionen read_args
aus diesem Modul verarbeitet die Befehlszeilenargumente, die Funktion print_message_with_values
gibt die Hilfe mit den aktuellen Einstellungen aus.
Das Modul ist im Zusammenhang mit den Kalendern beschrieben.
Herbaer::Replace
(Datei Replace.pm
(Quelltext))Die Funktion replace
ersetzt Platzhalter.
Herbaer::Translate
(Datei Translate.pm
(Quelltext))Die Methode new
liefert den Übersetzer.