diff options
author | randomdan <randomdan@localhost> | 2011-07-29 23:56:27 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2011-07-29 23:56:27 +0000 |
commit | e1647e6e2a549da1d8dcf0b25a3181330b828588 (patch) | |
tree | 80d9a3643102b77f972e1fd1d15713274c441df0 /project2/cgi | |
parent | Work around old compiler bug by fully qualifying function call to not get mix... (diff) | |
download | project2-e1647e6e2a549da1d8dcf0b25a3181330b828588.tar.bz2 project2-e1647e6e2a549da1d8dcf0b25a3181330b828588.tar.xz project2-e1647e6e2a549da1d8dcf0b25a3181330b828588.zip |
Strip out some useless wrappers
Add support for plugable session containers
Diffstat (limited to 'project2/cgi')
-rw-r--r-- | project2/cgi/cgiAppEngine.cpp | 23 | ||||
-rw-r--r-- | project2/cgi/cgiAppEngine.h | 2 | ||||
-rw-r--r-- | project2/cgi/cgiEnvironment.cpp | 2 | ||||
-rw-r--r-- | project2/cgi/cgiEnvironment.h | 1 | ||||
-rw-r--r-- | project2/cgi/cgiStageDefaultError.cpp | 4 | ||||
-rw-r--r-- | project2/cgi/cgiStageDefaultNotFound.cpp | 2 |
6 files changed, 18 insertions, 16 deletions
diff --git a/project2/cgi/cgiAppEngine.cpp b/project2/cgi/cgiAppEngine.cpp index ee19331..d601670 100644 --- a/project2/cgi/cgiAppEngine.cpp +++ b/project2/cgi/cgiAppEngine.cpp @@ -6,7 +6,6 @@ #include "../logger.h" #include <boost/bind.hpp> #include <boost/foreach.hpp> -#include "../sessionXml.h" #include "../ostreamWrapper.h" #include <boost/date_time/microsec_time_clock.hpp> #include <glibmm/regex.h> @@ -15,13 +14,12 @@ const std::string SESSIONID = "sessionID"; typedef UUID SIDKey; typedef std::string SValue; -SessionContainer * sessionsContainer = new SessionContainerXml(); - SimpleMessageException(UnknownDomain); CgiApplicationEngine::CgiApplicationEngine(const CgiEnvironment * e, std::ostream & io) : ApplicationEngine("web/host"), _env(e), + sessionsContainer(LoaderBase::getLoader<SessionContainerLoader, NotSupported>(e->sessionModule)->open()), IO(io) { BOOST_FOREACH(const cgicc::HTTPCookie c, e->getCookieList()) { @@ -34,7 +32,6 @@ CgiApplicationEngine::CgiApplicationEngine(const CgiEnvironment * e, std::ostrea CgiApplicationEngine::~CgiApplicationEngine() { - sessionsContainer->CleanUp(); } const Environment * @@ -124,20 +121,20 @@ void CgiApplicationEngine::addEnvData(const Presenter * p) const { // These were for debug... but why not pass them on? - p->addField("servername", env()->getXmlPrefix(), env()->getServerName()); - p->addField("scriptname", env()->getXmlPrefix(), env()->getScriptName()); + p->addField("servername", env()->xmlPrefix, env()->getServerName()); + p->addField("scriptname", env()->xmlPrefix, env()->getScriptName()); // URL elements - p->pushSub("uriElems", env()->getXmlPrefix()); + p->pushSub("uriElems", env()->xmlPrefix); BOOST_FOREACH(std::string s, _env->elems) { - p->addField("uriElem", env()->getXmlPrefix(), s); + p->addField("uriElem", env()->xmlPrefix, s); } p->popSub(); // Parameters - p->pushSub("params", env()->getXmlPrefix()); + p->pushSub("params", env()->xmlPrefix); BOOST_FOREACH(cgicc::FormEntry fe, _env->cgi->getElements()) { - p->pushSub("param", env()->getXmlPrefix()); + p->pushSub("param", env()->xmlPrefix); p->addAttr("name", fe.getName()); p->addAttr("value", fe.getValue()); p->popSub(); @@ -151,11 +148,11 @@ CgiApplicationEngine::addAppData(const Presenter * p) const addCoreAppData(p); // Sessions variables if (!sessionID.is_nil()) { - p->pushSub("session", env()->getXmlPrefix()); + p->pushSub("session", env()->xmlPrefix); p->addField("id", sessionID.str()); Session::Values session(sessionsContainer->GetSession(sessionID)->GetValuesCopy()); BOOST_FOREACH(Session::Values::value_type sv, session) { - p->pushSub("var", env()->getXmlPrefix()); + p->pushSub("var", env()->xmlPrefix); p->addAttr("value", sv.second); p->addAttr("name", sv.first); p->popSub(); @@ -164,7 +161,7 @@ CgiApplicationEngine::addAppData(const Presenter * p) const } // Timing info - p->pushSub("timing", env()->getXmlPrefix()); + p->pushSub("timing", env()->xmlPrefix); p->addAttr("start", startTime); if (!endTime.is_not_a_date_time()) { p->addAttr("end", endTime); diff --git a/project2/cgi/cgiAppEngine.h b/project2/cgi/cgiAppEngine.h index 8482181..2109a31 100644 --- a/project2/cgi/cgiAppEngine.h +++ b/project2/cgi/cgiAppEngine.h @@ -10,6 +10,7 @@ #include "../viewHost.h" #include "../transform.h" #include "../xmlPresenter.h" +#include "../sessionContainer.h" #include <boost/intrusive_ptr.hpp> #include <boost/tuple/tuple.hpp> @@ -46,6 +47,7 @@ class CgiApplicationEngine : public ApplicationEngine, public TransformChainLink mutable DomainPlatforms domplat; bool checkDomain(const DomainPlatforms::value_type & i) const; void loadEngineSection(const xmlpp::Element *) const; + SessionContainerPtr sessionsContainer; public: class Stage; diff --git a/project2/cgi/cgiEnvironment.cpp b/project2/cgi/cgiEnvironment.cpp index e88dbc1..1382709 100644 --- a/project2/cgi/cgiEnvironment.cpp +++ b/project2/cgi/cgiEnvironment.cpp @@ -57,6 +57,8 @@ CgiEnvironment::addOptions(boost::program_options::positional_options_descriptio "The present script to use when the requested script (or child) fails") ("dumpdatadoc", boost::program_options::value(&dumpdatadoc), "Write a copy of the data document before sending it to the web server") + ("sessionModule", boost::program_options::value(&sessionModule)->default_value("xml"), + "The module with which to implement session management") ; return cgi; } diff --git a/project2/cgi/cgiEnvironment.h b/project2/cgi/cgiEnvironment.h index abfe78e..db39da8 100644 --- a/project2/cgi/cgiEnvironment.h +++ b/project2/cgi/cgiEnvironment.h @@ -37,6 +37,7 @@ class CgiEnvironment : public Environment, public cgicc::CgiEnvironment { std::string notFoundPresent; std::string onErrorPresent; std::string defaultPresenter; + std::string sessionModule; }; #endif diff --git a/project2/cgi/cgiStageDefaultError.cpp b/project2/cgi/cgiStageDefaultError.cpp index 767a634..1843905 100644 --- a/project2/cgi/cgiStageDefaultError.cpp +++ b/project2/cgi/cgiStageDefaultError.cpp @@ -28,8 +28,8 @@ CgiApplicationEngine::DefaultErrorStage::getHeader() const CgiApplicationEngine::NextStage CgiApplicationEngine::DefaultErrorStage::run() { - pres->addField("error-type", e->getXmlPrefix(), buf); - pres->addField("error-what", e->getXmlPrefix(), what.c_str()); + pres->addField("error-type", e->xmlPrefix, buf); + pres->addField("error-what", e->xmlPrefix, what.c_str()); return NextStage(NULL, this, pres.get(), pres.get()); } diff --git a/project2/cgi/cgiStageDefaultNotFound.cpp b/project2/cgi/cgiStageDefaultNotFound.cpp index 2e7acb1..8359aa7 100644 --- a/project2/cgi/cgiStageDefaultNotFound.cpp +++ b/project2/cgi/cgiStageDefaultNotFound.cpp @@ -22,7 +22,7 @@ CgiApplicationEngine::DefaultNotFoundStage::getHeader() const CgiApplicationEngine::NextStage CgiApplicationEngine::DefaultNotFoundStage::run() { - pres->addField("missing-resource", e->getXmlPrefix(), nf.what()); + pres->addField("missing-resource", e->xmlPrefix, nf.what()); return NextStage(NULL, this, pres.get(), pres.get()); } |