diff options
author | randomdan <randomdan@localhost> | 2012-04-24 22:44:13 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2012-04-24 22:44:13 +0000 |
commit | 8ccecfaac2f28dec1a34d20b744917126be1e27b (patch) | |
tree | 3fc2c2eda00b224640c7d681e74dcb56952e6666 /project2/cgi | |
parent | Include content length when serving static content (diff) | |
download | project2-8ccecfaac2f28dec1a34d20b744917126be1e27b.tar.bz2 project2-8ccecfaac2f28dec1a34d20b744917126be1e27b.tar.xz project2-8ccecfaac2f28dec1a34d20b744917126be1e27b.zip |
Handy little lazy pointer class for last minute default initialisation
Diffstat (limited to 'project2/cgi')
-rw-r--r-- | project2/cgi/cgiAppEngine.h | 3 | ||||
-rw-r--r-- | project2/cgi/cgiStagePresent.cpp | 6 |
2 files changed, 4 insertions, 5 deletions
diff --git a/project2/cgi/cgiAppEngine.h b/project2/cgi/cgiAppEngine.h index 854013a..66d5a69 100644 --- a/project2/cgi/cgiAppEngine.h +++ b/project2/cgi/cgiAppEngine.h @@ -8,6 +8,7 @@ #include "taskHost.h" #include "viewHost.h" #include "transform.h" +#include "lazyPointer.h" #include "xmlPresenter.h" #include "presenterCache.h" #include "sessionContainer.h" @@ -104,7 +105,7 @@ class CgiApplicationEngine : public ApplicationEngine, public TransformChainLink virtual HttpHeaderPtr getHeader() const; protected: HttpHeaderPtr header; - mutable MultiRowSetPresenterPtr presenter; + LazyPointer<MultiRowSetPresenter> presenter; }; /// Stage to return previous cached output diff --git a/project2/cgi/cgiStagePresent.cpp b/project2/cgi/cgiStagePresent.cpp index 98031e4..9574e84 100644 --- a/project2/cgi/cgiStagePresent.cpp +++ b/project2/cgi/cgiStagePresent.cpp @@ -9,7 +9,8 @@ CgiApplicationEngine::PresentStage::PresentStage(ScriptReaderPtr s) : CgiApplicationEngine::ResponseStage(s->root()), CommonObjects(s->root()), CheckHost(s->root()), - ViewHost(s->root()) + ViewHost(s->root()), + presenter([root,this] { return PresenterLoader::getFor(this->env()->defaultPresenter)->create(root); }) { s->loader.addLoadTarget(s->root(), Storer::into<OutputOptionsLoader>(&outputOptions)); s->loader.addLoadTarget(s->root(), Storer::into<PresenterLoader>(&presenter)); @@ -51,9 +52,6 @@ CgiApplicationEngine::PresentStage::run() MultiRowSetPresenterPtr CgiApplicationEngine::PresentStage::getPresenter() const { - if (!presenter) { - presenter = PresenterLoader::getFor(env()->defaultPresenter)->create(root); - } return presenter; } |