diff options
Diffstat (limited to 'project2/cgi/cgiAppEngine.h')
-rw-r--r-- | project2/cgi/cgiAppEngine.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/project2/cgi/cgiAppEngine.h b/project2/cgi/cgiAppEngine.h index abd4b9e..532b74d 100644 --- a/project2/cgi/cgiAppEngine.h +++ b/project2/cgi/cgiAppEngine.h @@ -37,11 +37,13 @@ class CgiApplicationEngine : public ApplicationEngine { mutable cgicc::HTTPContentHeader * header; private: mutable boost::shared_ptr<xmlpp::Document> doc; - class Stage : public CommonObjects { + class Stage; + typedef boost::intrusive_ptr<Stage> StagePtr; + class Stage : public virtual CommonObjects { public: Stage(const CgiApplicationEngine *); virtual ~Stage() = 0; - virtual Stage * run() = 0; + virtual StagePtr run() = 0; protected: const CgiApplicationEngine * appEngine; }; @@ -49,7 +51,7 @@ class CgiApplicationEngine : public ApplicationEngine { public: RequestStage(const CgiApplicationEngine *, const std::string & id); virtual ~RequestStage(); - virtual Stage * run(); + virtual StagePtr run(); std::string present; protected: OrderedParamCheckers parameterChecks; @@ -60,9 +62,9 @@ class CgiApplicationEngine : public ApplicationEngine { PresentStage(const CgiApplicationEngine *, const std::string & id); PresentStage(const CgiApplicationEngine *, const std::string & group, const std::string & id); virtual ~PresentStage(); - virtual Stage * run(); + virtual StagePtr run(); }; - mutable Stage * currentStage; + mutable StagePtr currentStage; mutable UUID sessionID; }; |