CppCMS
session_pool.h
1 //
3 // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com>
4 //
5 // See accompanying file COPYING.TXT file for licensing details.
6 //
8 #ifndef CPPCMS_SESSION_POOL_H
9 #define CPPCMS_SESSION_POOL_H
10 
11 #include <cppcms/defs.h>
12 #include <booster/shared_ptr.h>
13 #include <booster/hold_ptr.h>
14 #include <cppcms/session_api.h>
15 
16 #include <memory>
17 
18 namespace cppcms {
19  class service;
20 
21  namespace sessions {
22  class encryptor_factory;
23  class session_storage_factory;
24  };
25 
32  class CPPCMS_API session_pool: public booster::noncopyable {
33  public:
35  session_pool(service &srv);
36  ~session_pool();
37 
38  void init();
39 
42 
46  void backend(std::auto_ptr<session_api_factory> b);
51  void encryptor(std::auto_ptr<sessions::encryptor_factory> e);
56  void storage(std::auto_ptr<sessions::session_storage_factory> s);
57  private:
58 
59  void after_fork();
60 
61  struct cookies_factory;
62  struct dual_factory;
63  struct sid_factory;
64  class gc_job;
65  template<typename Encryptor>
66  struct enc_factory;
67  template<typename Encryptor>
68  struct enc_factory_param;
69 
70  struct _data;
71 
72  friend struct cookies_factory;
73  friend struct dual_factory;
74  friend struct sid_factory;
75  friend class gc_job;
76 
78 
79  std::auto_ptr<session_api_factory> backend_;
80  std::auto_ptr<sessions::encryptor_factory> encryptor_;
81  std::auto_ptr<sessions::session_storage_factory> storage_;
82 
83  service *service_;
84  };
85 }
86 
87 
88 #endif
This class represent the central event loop of the CppCMS applications.
Definition: service.h:59
Definition: log.h:25
This class provides an access to session management backends an allow customization.
Definition: session_pool.h:32
This class makes impossible to copy any class derived from this one.
Definition: noncopyable.h:15