00001 // -*- c++ -*- 00002 00003 #ifndef QHTTPSERVLETRUNNER_H 00004 #define QHTTPSERVLETRUNNER_H 00005 00006 #include <qservletbase.h> 00007 #include <qasciidict.h> 00008 #include <qcstring.h> 00009 #include <qvaluelist.h> 00010 00011 class QTextStream; 00012 00013 class QHttpServlet; 00014 class QHttpServletRequest; 00015 class QHttpServletResponse; 00016 class QHttpSession; 00017 00022 class QHttpServletRunner : public QServletBase 00023 { 00024 public: 00025 QHttpServletRunner(); 00026 virtual ~QHttpServletRunner(); 00027 00029 QServletContext *context() { return ctx; } 00030 00036 void addServlet( const char *path, QHttpServlet *sv ); 00037 00042 bool removeServlet( const char *path ); 00043 00045 QHttpServletRequest *createRequest( QTextStream *in ); 00046 00048 QHttpServletResponse *createResponse( QIODevice *out, QHttpServletRequest *req ); 00049 00057 bool processRequest( QHttpServletRequest *req, QHttpServletResponse *res ); 00058 00060 QHttpServlet *findServlet( QHttpServletRequest *req ); 00061 00063 QHttpSession *findSession( QHttpServletRequest *req ); 00064 00065 private: 00067 QServletContext *createContext(); 00068 00069 QString createSessionId( QHttpServletRequest *req ); 00070 private: 00071 QServletContext *ctx; 00072 QValueList<QCString> paths; 00073 QAsciiDict<QHttpServlet> srvs; 00074 QString banner; 00075 00076 class QHttpServletRunnerData *d; 00077 static ulong session_number; 00078 }; 00079 00080 #endif 00081 00082 // Local Variables: 00083 // c-basic-offset: 3 00084 // End: