summaryrefslogtreecommitdiff
path: root/project2/cgi
diff options
context:
space:
mode:
authorrandomdan <randomdan@localhost>2012-04-24 22:44:13 +0000
committerrandomdan <randomdan@localhost>2012-04-24 22:44:13 +0000
commit8ccecfaac2f28dec1a34d20b744917126be1e27b (patch)
tree3fc2c2eda00b224640c7d681e74dcb56952e6666 /project2/cgi
parentInclude content length when serving static content (diff)
downloadproject2-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.h3
-rw-r--r--project2/cgi/cgiStagePresent.cpp6
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;
}