#ifndef SESSION_H #define SESSION_H #include #include #include #include #include #include "intrusivePtrBase.h" #include "variables.h" #include "exceptions.h" /// Base class for classes implementing session variable storage class Session : public virtual IntrusivePtrBase { public: SimpleMessageException(VariableNotFound); typedef std::map Values; typedef boost::function2 SVH; Session(const UUID & id); virtual ~Session(); VariableType GetValue(const Glib::ustring & name) const; void ForeachValue(const SVH &) const; void SetValue(const Glib::ustring & name, const VariableType & value); void ClearValue(const Glib::ustring & name); bool Empty() const; time_t ExpiryTime() const; const UUID ID; protected: void ExpiryTime(time_t); friend class SessionContainer; Values vars; time_t expires; }; typedef boost::intrusive_ptr SessionPtr; #endif