diff options
-rw-r--r-- | project2/Jamfile.jam | 40 | ||||
-rw-r--r-- | project2/console/consoleAppEngine.cpp | 49 | ||||
-rw-r--r-- | project2/console/consoleAppEngine.h | 3 | ||||
-rw-r--r-- | project2/session.cpp | 17 | ||||
-rw-r--r-- | project2/session.h | 14 | ||||
-rw-r--r-- | project2/sessionContainer.cpp | 18 | ||||
-rw-r--r-- | project2/sessionContainer.h | 20 | ||||
-rw-r--r-- | project2/sessionXml.cpp | 1 | ||||
-rw-r--r-- | project2/sessionXml.h | 3 |
9 files changed, 122 insertions, 43 deletions
diff --git a/project2/Jamfile.jam b/project2/Jamfile.jam index b396887..754adbf 100644 --- a/project2/Jamfile.jam +++ b/project2/Jamfile.jam @@ -18,18 +18,40 @@ lib esmtp : : <name>esmtp ; lib curl : : <name>curl ; lib p2common : - appEngine.cpp dataSource.cpp environment.cpp fileRows.cpp fileStarGlibIoChannel.cpp iHaveParameters.cpp - iterate.cpp paramChecker.cpp perRowValues.cpp presenter.cpp procRows.cpp rawView.cpp regexCheck.cpp + appEngine.cpp dataSource.cpp environment.cpp fileStarGlibIoChannel.cpp iHaveParameters.cpp + iterate.cpp paramChecker.cpp perRowValues.cpp presenter.cpp rawView.cpp sourceObject.cpp task.cpp variables.cpp view.cpp xmlObjectLoader.cpp + sessionClearTask.cpp session.cpp sessionSetTask.cpp : <library>../libmisc//misc <library>libxmlpp - <library>boost_regex <library>boost_filesystem ; -lib p2session : - [ glob session*.cpp ] +lib p2processes : + procRows.cpp + : + <library>../libmisc//misc + <library>libxmlpp + ; + +lib p2files : + fileRows.cpp + : + <library>../libmisc//misc + <library>libxmlpp + ; + +lib p2regex : + regexCheck.cpp + : + <library>../libmisc//misc + <library>boost_regex + <library>libxmlpp + ; + +lib p2xmlSession : + sessionContainer.cpp sessionXml.cpp : <library>../libmisc//misc <library>libxmlpp @@ -64,10 +86,13 @@ lib p2mail : exe p2web : [ glob cgi/*.cpp ] : <library>p2common - <library>p2session <library>p2url <library>p2sql <library>p2mail + <library>p2files + <library>p2regex + <library>p2processes + <library>p2xmlSession <library>fcgi++ <library>fcgi <library>cgicc @@ -77,8 +102,11 @@ exe p2console : [ glob console/*.cpp ] : <library>p2common <library>p2url + <library>p2files + <library>p2processes <library>p2sql <library>p2mail + <library>p2regex ; explicit install ; diff --git a/project2/console/consoleAppEngine.cpp b/project2/console/consoleAppEngine.cpp index e58bf5d..d46d091 100644 --- a/project2/console/consoleAppEngine.cpp +++ b/project2/console/consoleAppEngine.cpp @@ -4,9 +4,54 @@ #include <stdexcept> #include <libxml/xinclude.h> +class ConsoleSession : public Session { + public: + ConsoleSession() : expiry(0) + { + } + virtual ~ConsoleSession() + { + } + + virtual Glib::ustring GetValue(const Glib::ustring & name) const + { + Values::const_iterator i = vars.find(name); + if (i == vars.end()) { + throw Session::VariableNotFound(); + } + return i->second; + } + virtual Values GetValuesCopy() const + { + return vars; + } + virtual void SetValue(const Glib::ustring & name, const Glib::ustring & value) + { + vars[name] = value; + } + virtual void ClearValue(const Glib::ustring & name) + { + vars.erase(name); + } + virtual time_t ExpiryTime() const + { + return expiry; + } + + protected: + virtual void ExpiryTime(time_t t) + { + expiry = t; + } + private: + time_t expiry; + Values vars; +}; + ConsoleApplicationEngine::ConsoleApplicationEngine(const ConsoleEnvironment * env, const boost::filesystem::path & f) : ApplicationEngine(), - _env(env) + _env(env), + runtime(new ConsoleSession()) { xmlpp::DomParser request(f.string()); while (xmlXIncludeProcessFlags(request.get_document()->cobj(), XML_PARSE_NOXINCNODE) > 0); @@ -58,7 +103,7 @@ ConsoleApplicationEngine::env() const SessionPtr ConsoleApplicationEngine::session() const { - return SessionPtr(); + return runtime; } PresenterPtr diff --git a/project2/console/consoleAppEngine.h b/project2/console/consoleAppEngine.h index fb9597e..b40ef8a 100644 --- a/project2/console/consoleAppEngine.h +++ b/project2/console/consoleAppEngine.h @@ -6,13 +6,11 @@ #include "../paramChecker.h" #include "../presenter.h" #include <boost/intrusive_ptr.hpp> -#include <boost/uuid/uuid.hpp> #include <boost/filesystem/path.hpp> #include <libxml++/document.h> #include <libxml++/parsers/domparser.h> class ConsoleEnvironment; -class Session; class ConsoleApplicationEngine : public ApplicationEngine { public: @@ -36,6 +34,7 @@ class ConsoleApplicationEngine : public ApplicationEngine { }; OrderedParamCheckers parameterChecks; NoOutputExecutes tasks; + SessionPtr runtime; }; #endif diff --git a/project2/session.cpp b/project2/session.cpp index 87bea0c..6246068 100644 --- a/project2/session.cpp +++ b/project2/session.cpp @@ -1,5 +1,4 @@ #include "session.h" -#include <syslog.h> Session::Session() { @@ -9,19 +8,3 @@ Session::~Session() { } -SessionContainer::SessionContainer() -{ -} - -SessionContainer::~SessionContainer() -{ -} - -SessionPtr -SessionContainer::GetSession(boost::uuids::uuid & id) -{ - SessionPtr s = getSession(id); - s->ExpiryTime(time(NULL) + 3600); - return s; -} - diff --git a/project2/session.h b/project2/session.h index c0101fe..8266acb 100644 --- a/project2/session.h +++ b/project2/session.h @@ -3,7 +3,6 @@ #include <map> #include <glibmm/ustring.h> -#include <boost/uuid/uuid.hpp> #include <boost/intrusive_ptr.hpp> #include "intrusivePtrBase.h" @@ -27,18 +26,5 @@ class Session : public virtual IntrusivePtrBase { }; typedef boost::intrusive_ptr<Session> SessionPtr; -class SessionContainer { - public: - SessionContainer(); - virtual ~SessionContainer() = 0; - - SessionPtr GetSession(boost::uuids::uuid & sid); - virtual void CleanUp() { } - - protected: - virtual SessionPtr getSession(boost::uuids::uuid & sid) = 0; -}; - - #endif diff --git a/project2/sessionContainer.cpp b/project2/sessionContainer.cpp new file mode 100644 index 0000000..5a73e3b --- /dev/null +++ b/project2/sessionContainer.cpp @@ -0,0 +1,18 @@ +#include "sessionContainer.h" + +SessionContainer::SessionContainer() +{ +} + +SessionContainer::~SessionContainer() +{ +} + +SessionPtr +SessionContainer::GetSession(boost::uuids::uuid & id) +{ + SessionPtr s = getSession(id); + s->ExpiryTime(time(NULL) + 3600); + return s; +} + diff --git a/project2/sessionContainer.h b/project2/sessionContainer.h new file mode 100644 index 0000000..08ad0e9 --- /dev/null +++ b/project2/sessionContainer.h @@ -0,0 +1,20 @@ +#ifndef SESSIONCONTAINER_H +#define SESSIONCONTAINER_H + +#include <boost/uuid/uuid.hpp> +#include "session.h" + +class SessionContainer { + public: + SessionContainer(); + virtual ~SessionContainer() = 0; + + SessionPtr GetSession(boost::uuids::uuid & sid); + virtual void CleanUp() { } + + protected: + virtual SessionPtr getSession(boost::uuids::uuid & sid) = 0; +}; + +#endif + diff --git a/project2/sessionXml.cpp b/project2/sessionXml.cpp index 68e19ea..3b42924 100644 --- a/project2/sessionXml.cpp +++ b/project2/sessionXml.cpp @@ -3,7 +3,6 @@ #include <libxml++/parsers/domparser.h> #include <libxml++/nodes/textnode.h> #include <set> -#include <boost/uuid/uuid.hpp> #include <boost/foreach.hpp> #include <boost/uuid/uuid_generators.hpp> #include <boost/lexical_cast.hpp> diff --git a/project2/sessionXml.h b/project2/sessionXml.h index 6995826..f9d0059 100644 --- a/project2/sessionXml.h +++ b/project2/sessionXml.h @@ -1,8 +1,9 @@ #ifndef SESSIONXML_H #define SESSIONXML_H -#include "session.h" +#include "sessionContainer.h" #include <map> +#include <boost/uuid/uuid.hpp> class SessionContainerXml : public SessionContainer { public: |