Hauptseite   Liste aller Namensbereiche   Klassenhierarchie   Alphabetische Liste   Übersicht   Auflistung der Dateien   Elemente eines Namensbereiches   Datenstruktur-Elemente   Datei-Elemente  

Sflex Klassenreferenz

Die Hauptklasse des Systems. Mehr...

#include <Sflex.hpp>

Zusammengehörigkeiten von Sflex:

Collaboration graph
[Legende]
Aufstellung aller Elemente

Ö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

SflexConfigsflexConfig_
 Der Zeiger auf das Konfigurations-Objekt. Mehr...

SflexModulesflexModule_
 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...


Ausführliche Beschreibung

Die Hauptklasse des Systems.

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.


Beschreibung der Konstruktoren und Destruktoren

Sflex::Sflex std::string    configFile
 

Wird ein leerer String übergeben, wird der Pfad auf '/etc/sflex.conf' gesetzt.

Parameter:
configFile  der Name der Konfigurationsdatei mit Pfad.

00026     : sflexConfig_  ( 0 ),
00027       sflexModule_  ( 0 ),
00028       configFile_  ( configFile ),
00029       contentType_ ( "text/html" ),
00030       isSuccess_   ( false )
00031 {
00032     
00033 }

Sflex::~Sflex  
 

00038 {
00039     delete sflexModule_;   
00040 }

Sflex::Sflex   [private]
 

Ein deklarierter Konstruktor, der nicht definiert wird.

Paranoia.


Dokumentation der Elementfunktionen

const std::string Sflex::getContentType   const
 

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.

Rückgabe:
den Content-Type des Ergebnisses

00123 {
00124     return contentType_;
00125 }

const std::string Sflex::getErrorFooter   const [private]
 

Liefert im Fehlerfalle das Ende des HTML-Dokuments.

Ebenfalls ein minimales HTML-Gerüst.

Rückgabe:
das HTML-Ende

00144 {
00145     return "</pre></body></html>\n";
00146 }

const std::string Sflex::getErrorHeader   const [private]
 

Liefert im Fehlerfalle den Kopf des HTML-Dokuments.

Er besteht im Moment nur aus einem minimalen HTML-Gerüst.

Rückgabe:
den HTML-Kopf

00138 {
00139     return "<html><head><title>Fehler</title></head><body><pre>\n";
00140 }

const std::string Sflex::getResult  
 

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).

Rückgabe:
das Ergebnis

00111 {
00112     if ( !isSuccess_ ) {
00113         resultStream_ << getErrorFooter();
00114         return getErrorHeader() + resultStream_.str();
00115     }
00116     return resultStream_.str();
00117 }

void Sflex::init std::string    pathInfo,
std::string    scriptName,
const std::map< std::string, std::string > &    cgiValueList
 

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.

Parameter:
pathInfo  der Inhalt der PATH_INFO Variable
scriptName  der Inhalt der SCRIPT_NAME Variable
cgiValueList  der Container mit der übergebenen CGI-Werten

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 }

bool Sflex::isSuccess   const
 

Genereller Status des Systems.

Wenn ein Fehler erkannt wird, wird dieser auf false gesetzt. Das Hauptprogramm kann darauf beispielsweise mit verschiedenen Headern reagieren.

Rückgabe:
den Status des Systems

00130 {
00131     return isSuccess_;
00132 }

void Sflex::makeResult  
 

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 }


Dokumentation der Datenelemente

std::string Sflex::configFile_ [private]
 

Der Name der Konfigurationsdatei (mit Pfad).

std::string Sflex::contentType_ [private]
 

Der Content-Type.

Standardmäßig text/html. Wird bei einer erfolgreichen Verarbeitung eines Moduls vom selbigen überschrieben.

bool Sflex::isSuccess_ [private]
 

Der Status des Objektes.

std::ostringstream Sflex::resultStream_ [private]
 

Der Ergebnis Stream.

SflexConfig* Sflex::sflexConfig_ [private]
 

Der Zeiger auf das Konfigurations-Objekt.

SflexModule* Sflex::sflexModule_ [private]
 

Der Zeiger auf das Modul-Objekt.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Fri Apr 12 10:56:30 2002 für SfleX von doxygen1.2.14 geschrieben von Dimitri van Heesch, © 1997-2002