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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/* Copyright © 2005-2009 Roger Leigh <rleigh@debian.org>
*
* schroot is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* schroot is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
* <http://www.gnu.org/licenses/>.
*
*********************************************************************/
#ifndef SBUILD_CHROOT_SESSION_H
#define SBUILD_CHROOT_SESSION_H
#include <sbuild/sbuild-chroot.h>
namespace sbuild
{
/**
* A chroot may offer a "session" chroot in addition to its inactive
* copy. This interface may be implemented by any chroot wishing to
* provide such functionality.
*
* While this is effectively an interface, in practice this derives
* from sbuild::chroot, to allow setting and getting of data from a
* keyfile, including storing the keyfile options.
*
* Chroot types implementing chroot_session should, at a minimum,
* implement clone_session(). This should create and return a session
* chroot, and must call clone_session_setup() to set up the session
* chroot.
*/
class chroot_session
{
protected:
/// The constructor.
chroot_session ();
friend class chroot;
public:
/// The destructor.
virtual ~chroot_session ();
/**
* Create a session chroot.
*
* @param session_id the identifier for the new session.
* @returns a session chroot.
*/
virtual chroot::ptr
clone_session (std::string const& session_id) const = 0;
protected:
/**
* Set the defaults in the cloned session chroot.
*
* @param clone the chroot to set up.
* @param session_id the identifier for the new session.
*/
virtual void
clone_session_setup (chroot::ptr& clone,
std::string const& session_id) const;
public:
/**
* Get if the chroot is a session manageable chroot or not.
*
* @returns true if the chroot is a session manageable chroot,
* otherwise false.
*/
virtual bool
get_session_manageable () const;
/**
* Set if the chroot is a session manageable chroot or not.
*
* @param session true if a session chroot, manageable or false if
* not.
*/
virtual void
set_session_manageable (bool manageable);
/**
* Get if the chroot is an active session or not.
*
* @returns true if the chroot is an active session, otherwise false.
*/
virtual bool
get_session_active () const;
/**
* Set if the chroot is an active session or not.
*
* @param session true if an active session, or false if not.
*/
virtual void
set_session_active (bool active);
void
setup_env (environment& env);
protected:
virtual chroot::session_flags
get_session_flags () const;
virtual void
get_details (format_detail& detail) const;
void
get_keyfile (keyfile& keyfile) const;
void
set_keyfile (keyfile const& keyfile,
string_list& used_keys);
private:
/// Is the chroot session or clone?
bool session_manageable;
/// Is the session active?
bool session_active;
};
}
#endif /* SBUILD_CHROOT_SESSION_H */
/*
* Local Variables:
* mode:C++
* End:
*/
|