00001
00002
00003
00004
00005
00006
00008 #ifndef CPPCMS_SESSION_STORAGE_H
00009 #define CPPCMS_SESSION_STORAGE_H
00010
00011 #include <cppcms/defs.h>
00012 #include <booster/noncopyable.h>
00013 #include <booster/shared_ptr.h>
00014 #include <string>
00015
00016 namespace cppcms {
00017 namespace json {
00018 class value;
00019 }
00020 namespace sessions {
00021
00030
00031 class session_storage : public booster::noncopyable
00032 {
00033 public:
00037
00038 virtual void save(std::string const &sid,time_t timeout,std::string const &in) = 0;
00039
00044 virtual bool load(std::string const &sid,time_t &timeout,std::string &out) = 0;
00045
00049
00050 virtual void remove(std::string const &sid) = 0;
00051
00055 virtual bool is_blocking() = 0;
00056
00057
00061 virtual ~session_storage()
00062 {
00063 }
00064 };
00065
00069 class session_storage_factory {
00070 public:
00075 virtual booster::shared_ptr<session_storage> get() = 0;
00076
00080 virtual bool requires_gc() = 0;
00085 virtual void gc_job() {}
00089 virtual ~session_storage_factory() {}
00090 };
00091
00092 extern "C" {
00093 typedef session_storage_factory *(*cppcms_session_storage_generator_type)(cppcms::json::value const &options);
00094 }
00095
00096
00097 }
00098 }
00099
00100
00101 #endif