pipe_srv.pl


Übersicht

pipe_srv.pl --help | --version

pipe_srv.pl [ --verbose... | --no_verbose ]
[--base BASE] [--req REQ] [--resp RESP] [--trname TRNAME] [--trname ERRSLEEP]

Zweck

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.

Anfragen (Requests)

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 TRANSLATOR_NAME, wobei der Platzhalter 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.

Optionen

Die Werte der Platzhalter BASE, REQ, RESP und TRNAME können die Platzhalter ${base}, ${req}, ${resp}, ${trname} und ${errsleep} für die Werte der (anderen) Platzhalter enthalten. Zum Einsetzen der Platzhalterwerte dient das Modul 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 ${base} enthalten. Die Zeichenfolgen ${base} wird durch den Wert von 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.

Software-Voraussetzungen

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.