00001 00006 #ifndef HTTPSESSIONSTORE_H 00007 #define HTTPSESSIONSTORE_H 00008 00009 #include <QObject> 00010 #include <QMap> 00011 #include <QTimer> 00012 #include <QMutex> 00013 #include "httpsession.h" 00014 #include "httpresponse.h" 00015 #include "httprequest.h" 00016 00032 class HttpSessionStore : public QObject { 00033 Q_OBJECT 00034 Q_DISABLE_COPY(HttpSessionStore); 00035 public: 00036 00038 HttpSessionStore(QSettings* settings, QObject* parent); 00039 00041 virtual ~HttpSessionStore(); 00042 00052 QByteArray getSessionId(HttpRequest& request, HttpResponse& response); 00053 00064 HttpSession getSession(HttpRequest& request, HttpResponse& response, bool allowCreate=true); 00065 00073 HttpSession getSession(const QByteArray id); 00074 00076 void removeSession(HttpSession session); 00077 00078 private: 00079 00081 QSettings* settings; 00082 00084 QMap<QByteArray,HttpSession> sessions; 00085 00087 QTimer cleanupTimer; 00088 00090 QByteArray cookieName; 00091 00093 int expirationTime; 00094 00096 QMutex mutex; 00097 00098 private slots: 00099 00101 void timerEvent(); 00102 }; 00103 00104 #endif // HTTPSESSIONSTORE_H