forked from artyom-beilis/cppcms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsession_dual.h
More file actions
71 lines (63 loc) · 2.05 KB
/
Copy pathsession_dual.h
File metadata and controls
71 lines (63 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com>
//
// See accompanying file COPYING.TXT file for licensing details.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef CPPCMS_SESSION_DUAL_H
#define CPPCMS_SESSION_DUAL_H
#include <cppcms/session_api.h>
#include <cppcms/defs.h>
#include <booster/hold_ptr.h>
#include <booster/shared_ptr.h>
#include <booster/auto_ptr_inc.h>
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<encryptor> enc,
booster::shared_ptr<session_storage> 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<session_cookies> client_;
booster::shared_ptr<session_sid> server_;
size_t data_size_limit_;
};
} // sessions
} // cppcms
#endif