Source Code (Use browser search to find items of interest.)
Class Index
kdesu'Repository (./kdebase/kdesu/kdesud/repo.h:31)
class Repository {
public:
Repository();
~Repository();
/**
* Expire data elements which are too old.
*/
int expire();
/**
* Add a data element
*/
void add(const QCString &key, Data_entry &data);
/**
* Delete a data element. The value field is overwritten before it is
* deleted because it could contain sensitive information.
*/
int remove(const QCString& key);
/**
* Return a data entry.
*/
const Data_entry *find(const QCString &key) const;
private:
QMap<QCString,Data_entry> repo;
QMap<QCString,Data_entry>::Iterator repo_it;
mutable QMap<QCString,Data_entry>::ConstIterator repo_cit;
unsigned head_time;
};
kdesu'Repository::Repository() (./kdebase/kdesu/kdesud/repo.cpp:19)
Repository::Repository()
{
head_time = (unsigned) -1;
}
kdesu'Repository::~Repository() (./kdebase/kdesu/kdesud/repo.cpp:25)
Repository::~Repository()
{}
kdesu'Repository::add() (./kdebase/kdesu/kdesud/repo.cpp:29)
void Repository::add(const QCString &key, Data_entry &data)
{
if (repo.find(key) != repo.end())
remove(key);
data.timeout += time(0L);
head_time = QMIN(head_time, data.timeout);
repo[key] = data;
}
kdesu'Repository::remove() (./kdebase/kdesu/kdesud/repo.cpp:40)
int Repository::remove(const QCString &key)
{
repo_it = repo.find(key);
if (repo_it == repo.end())
return -1;
repo_it.data().value.fill('x');
repo.remove(key);
return 0;
}
kdesu'Repository::find() (./kdebase/kdesu/kdesud/repo.cpp:53)
const Data_entry *Repository::find(const QCString &key) const
{
repo_cit = repo.find(key);
if (repo_cit == repo.end())
return 0L;
return &repo_cit.data();
}
kdesu'Repository::expire() (./kdebase/kdesu/kdesud/repo.cpp:63)
int Repository::expire()
{
unsigned current = time(0L);
if (current < head_time)
return 0;
QValueStack<QCString> keys;
unsigned t;
head_time = (unsigned) -1;
for (repo_cit=repo.begin(); repo_cit!=repo.end(); repo_cit++) {
t = repo_cit.data().timeout;
if (current >= t)
keys.push(repo_cit.key());
else
head_time = QMIN(head_time, t);
}
int n = keys.count();
while (!keys.isEmpty())
remove(keys.pop());
return n;
}