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 | adcd84938d66dfaae45c0638aec3a09fb4be6d87 (patch) | |
| tree | 3fc2c2eda00b224640c7d681e74dcb56952e6666 /project2/cgi | |
| parent | Include content length when serving static content (diff) | |
| download | project2-adcd84938d66dfaae45c0638aec3a09fb4be6d87.tar.bz2 project2-adcd84938d66dfaae45c0638aec3a09fb4be6d87.tar.xz project2-adcd84938d66dfaae45c0638aec3a09fb4be6d87.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; } |
