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

exec.cpp Dateireferenz

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <ctime>
#include <cstdlib>
#include "cgicc/Cgicc.h"
#include "Sflex.hpp"
#include "HttpResponseHeader.hpp"

Include-Abhängigkeitsdiagramm für exec.cpp:

Include dependency graph

Funktionen

std::string getTime (int offset=0)
 Liefert eine Zeitangabe. Mehr...

int main (int, char **)

Dokumentation der Funktionen

std::string getTime int    offset
 

Liefert eine Zeitangabe.

Die Zeitangabe wird in eine Zeichenkette umgewandelt, die dem Format des RFC 1123 entspricht (Mon, 06 May 1996 04:57:00 GMT).

Parameter:
offset  die Anzahl der Sekunden, die zur aktuellen Zeit aufgeschlagen werden sollen
Rückgabe:
die Zeit in RFC 1123

00109 {
00110     using std::time;
00111     using std::time_t;
00112     using std::tm;
00113     using std::strftime;
00114 
00115     char timeC[ 30 ];
00116     time_t time_now = time( 0 );
00117     time_now += offset;
00118     tm *date = localtime( &time_now );
00119     strftime( timeC, 30, "%a, %d %b %Y %X GMT", date );
00120 
00121     return timeC;    
00122 }

int main int   ,
char **   
 

00035 {
00036     using std::cout;
00037     using std::endl;
00038     using std::string;
00039     using std::vector;
00040     using std::map;
00041     using std::getenv;
00042     using cgicc::Cgicc;
00043     using cgicc::CgiEnvironment;
00044     using cgicc::FormEntry;
00045 
00046     Cgicc cgi;
00047     const CgiEnvironment &env = cgi.getEnvironment();
00048     const vector< FormEntry > vFormEntries = cgi.getElements();
00049     vector< FormEntry >::const_iterator i;
00050     vector< FormEntry >::const_iterator iEnd = vFormEntries.end();
00051     map< string, string > cgiValueList;
00052     for ( i = vFormEntries.begin(); i != iEnd; ++i ) {
00053         cgiValueList[ i->getName() ] = i->getValue();
00054     }
00055     
00056     string sflexConf;
00057     const char *conf = getenv("SFLEX_CONF");
00058     if ( conf ) {
00059         sflexConf = conf;
00060     }
00061     else {
00062         sflexConf = "";
00063     }
00064             
00065     Sflex s( sflexConf );
00066 
00067     s.init( 
00068         env.getPathInfo(), 
00069         env.getScriptName(),
00070         cgiValueList
00071         );
00072 
00073     s.makeResult();
00074     const string body =  s.getResult();
00075 
00076     HttpResponseHeader h( s.getContentType() );
00077     h.addHeader( "Content-Length", body.length() );
00078     h.addHeader( "Status", "200 OK" );
00079     h.addHeader( "Last-Modified", getTime() );
00080     if ( s.isSuccess() ) {
00081         h.addHeader( "Cache-Control", "public, max-age=30000" );
00082         h.addHeader( "Expires", getTime( 3600*24*30 ) );
00083     }
00084     else {
00085         h.addHeader( "Cache-Control", "no-cache" );
00086         h.addHeader( "Expires", getTime() );
00087     }
00088     
00089     cout << h.getHeaders()
00090          << endl
00091          << body;
00092            
00093     return 0;
00094 }


Erzeugt am Fri Apr 12 10:54:44 2002 für SfleX von doxygen1.2.14 geschrieben von Dimitri van Heesch, © 1997-2002