/////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) // // See accompanying file COPYING.TXT file for licensing details. // /////////////////////////////////////////////////////////////////////////////// #ifndef CPPCMS_SESSION_DUAL_H #define CPPCMS_SESSION_DUAL_H #include #include #include #include #include namespace cppcms { namespace sessions { class session_storage; class session_sid; class session_cookies; class encryptor; /// /// \brief Client and Server side storage implementation of session_api /// class CPPCMS_API session_dual : public session_api { public: /// /// Create a new object using encryptor \a enc and session_storage \a storage. /// \a data_size_limit represents the maximal data size that can be stored on client side, if the data size is bigger then that /// the session data will be stored on server /// session_dual( std::auto_ptr enc, booster::shared_ptr storage, size_t data_size_limit); /// /// Destroy the object: release pointer to \a storage and delete an encryptor it was created with. /// virtual ~session_dual(); /// /// See session_api::save /// virtual void save(session_interface &,std::string const &data,time_t timeout,bool new_session,bool on_server); /// /// See session_api::load /// virtual bool load(session_interface &,std::string &data,time_t &timeout); /// /// See session_api::clear /// virtual void clear(session_interface &); /// /// see session_api::is_blocking /// virtual bool is_blocking(); private: struct _data; booster::hold_ptr<_data> d; booster::shared_ptr client_; booster::shared_ptr server_; size_t data_size_limit_; }; } // sessions } // cppcms #endif