#include <Sflex.hpp>
Zusammengehörigkeiten von Sflex:

Öffentliche Datenelemente | |
| Sflex (std::string configFile) | |
| Wird ein leerer String übergeben, wird der Pfad auf '/etc/sflex.conf' gesetzt. Mehr... | |
| ~Sflex () | |
| void | init (std::string pathInfo, std::string scriptName, const std::map< std::string, std::string > &cgiValueList) |
| Sammelt die Daten, die noch benötigt werden. Mehr... | |
| void | makeResult () |
| Erstellt das Ergebnis. Mehr... | |
| const std::string | getResult () |
| Liefert das Ergebnis der Anfrage. Mehr... | |
| const std::string | getContentType () const |
| Liefert den Content-Type. Mehr... | |
| bool | isSuccess () const |
| Genereller Status des Systems. Mehr... | |
Private Datenelemente | |
| Sflex () | |
| Ein deklarierter Konstruktor, der nicht definiert wird. Mehr... | |
| const std::string | getErrorHeader () const |
| Liefert im Fehlerfalle den Kopf des HTML-Dokuments. Mehr... | |
| const std::string | getErrorFooter () const |
| Liefert im Fehlerfalle das Ende des HTML-Dokuments. Mehr... | |
Private Attribute | |
| SflexConfig * | sflexConfig_ |
| Der Zeiger auf das Konfigurations-Objekt. Mehr... | |
| SflexModule * | sflexModule_ |
| Der Zeiger auf das Modul-Objekt. Mehr... | |
| std::ostringstream | resultStream_ |
| Der Ergebnis Stream. Mehr... | |
| std::string | configFile_ |
| Der Name der Konfigurationsdatei (mit Pfad). Mehr... | |
| std::string | contentType_ |
| Der Content-Type. Mehr... | |
| bool | isSuccess_ |
| Der Status des Objektes. Mehr... | |
Diese Klasse ist der Vermittler zwischen dem System und dem Hauptprogramm. Sie sammelt auch die noch benötigten Daten (CGI-Werte, Pfad zur Konfigurationsdatei etc.) ein.
|
|
Wird ein leerer String übergeben, wird der Pfad auf '/etc/sflex.conf' gesetzt.
00026 : sflexConfig_ ( 0 ), 00027 sflexModule_ ( 0 ), 00028 configFile_ ( configFile ), 00029 contentType_ ( "text/html" ), 00030 isSuccess_ ( false ) 00031 { 00032 00033 } |
|
|
00038 {
00039 delete sflexModule_;
00040 }
|
|
|
Ein deklarierter Konstruktor, der nicht definiert wird. Paranoia. |
|
|
Liefert den Content-Type. Der Wert wird bei einem erfolgreichem Ablauf von dem jeweiligen Modul abgefragt. Ist aber ein Fehler aufgetreten wird die Fehlermeldung als text/html zurückgegeben.
00123 {
00124 return contentType_;
00125 }
|
|
|
Liefert im Fehlerfalle das Ende des HTML-Dokuments. Ebenfalls ein minimales HTML-Gerüst.
00144 {
00145 return "</pre></body></html>\n";
00146 }
|
|
|
Liefert im Fehlerfalle den Kopf des HTML-Dokuments. Er besteht im Moment nur aus einem minimalen HTML-Gerüst.
00138 {
00139 return "<html><head><title>Fehler</title></head><body><pre>\n";
00140 }
|
|
|
Liefert das Ergebnis der Anfrage. Dabei ist es egal, ob die tatsächlich zum Erfolg geführt hat. Es wird immer etwas zurückgegeben (im Falle eines Fehlers, die entsprechende Meldung).
00111 {
00112 if ( !isSuccess_ ) {
00113 resultStream_ << getErrorFooter();
00114 return getErrorHeader() + resultStream_.str();
00115 }
00116 return resultStream_.str();
00117 }
|
|
||||||||||||||||
|
Sammelt die Daten, die noch benötigt werden. Dazu gehören die Umgebungsvariablen PATH_INFO und SCRIPT_NAME und ein Container (eine map) mit den Daten, die mittels CGI übergeben wurden.
00048 {
00049 if ( configFile_.empty() ) {
00050 configFile_ = "/etc/sflex.conf";
00051 }
00052
00053 sflexConfig_ = SflexConfig::getConfig();
00054 sflexConfig_->parseConfig( configFile_ );
00055
00056 if ( !sflexConfig_->isSuccess() ) {
00057 resultStream_ << sflexConfig_->getError();
00058 isSuccess_ = false;
00059 return;
00060 }
00061
00062 sflexConfig_->addPathInfo( pathInfo );
00063 sflexConfig_->addValue( "sflex" , "scriptName", scriptName );
00064 sflexConfig_->addCgiValues( cgiValueList );
00065
00066 if ( !sflexConfig_->isSuccess() ) {
00067 resultStream_ << sflexConfig_->getError();
00068 isSuccess_ = false;
00069 return;
00070 }
00071
00072 isSuccess_ = true;
00073 return;
00074 }
|
|
|
Genereller Status des Systems. Wenn ein Fehler erkannt wird, wird dieser auf false gesetzt. Das Hauptprogramm kann darauf beispielsweise mit verschiedenen Headern reagieren.
00130 {
00131 return isSuccess_;
00132 }
|
|
|
Erstellt das Ergebnis.
00080 {
00081 if ( !isSuccess_ ) {
00082 resultStream_ << "Sflex: Fehler in der Initialisierung!\n";
00083 return;
00084 }
00085
00086 SflexWorkerFactory *wF = SflexWorkerFactory::getFactory();
00087 sflexModule_ = wF->makeModule( sflexConfig_->getValue( "sflex", "module") );
00088 if ( !sflexModule_ ) {
00089 resultStream_ << wF->getError();
00090 isSuccess_ = false;
00091 return;
00092 }
00093
00094 sflexModule_->work();
00095 if ( !sflexModule_->isSuccess() ) {
00096 resultStream_ << sflexModule_->getResult();
00097 isSuccess_ = false;
00098 return;
00099 }
00100 resultStream_ << sflexModule_->getResult();
00101 contentType_ = sflexModule_->getContentType();
00102 isSuccess_ = true;
00103
00104 return;
00105 }
|
|
|
Der Name der Konfigurationsdatei (mit Pfad).
|
|
|
Der Content-Type. Standardmäßig text/html. Wird bei einer erfolgreichen Verarbeitung eines Moduls vom selbigen überschrieben. |
|
|
Der Status des Objektes.
|
|
|
Der Ergebnis Stream.
|
|
|
Der Zeiger auf das Konfigurations-Objekt.
|
|
|
Der Zeiger auf das Modul-Objekt.
|
1.2.14 geschrieben von Dimitri van Heesch,
© 1997-2002