10 using namespace stefanfrings;
16 dataPtr=
new HttpSessionData();
18 dataPtr->lastAccess=QDateTime::currentMSecsSinceEpoch();
19 dataPtr->id=QUuid::createUuid().toString().toLocal8Bit();
21 qDebug(
"HttpSession: (constructor) new session %s with refCount=1",dataPtr->id.constData());
32 dataPtr=other.dataPtr;
35 dataPtr->lock.lockForWrite();
38 qDebug(
"HttpSession: (constructor) copy session %s refCount=%i",dataPtr->id.constData(),dataPtr->refCount);
40 dataPtr->lock.unlock();
46 HttpSessionData* oldPtr=dataPtr;
47 dataPtr=other.dataPtr;
50 dataPtr->lock.lockForWrite();
53 qDebug(
"HttpSession: (operator=) session %s refCount=%i",dataPtr->id.constData(),dataPtr->refCount);
55 dataPtr->lastAccess=QDateTime::currentMSecsSinceEpoch();
56 dataPtr->lock.unlock();
61 oldPtr->lock.lockForWrite();
62 refCount=--oldPtr->refCount;
64 qDebug(
"HttpSession: (operator=) session %s refCount=%i",oldPtr->id.constData(),oldPtr->refCount);
66 oldPtr->lock.unlock();
69 qDebug(
"HttpSession: deleting old data");
80 dataPtr->lock.lockForWrite();
81 refCount=--dataPtr->refCount;
83 qDebug(
"HttpSession: (destructor) session %s refCount=%i",dataPtr->id.constData(),dataPtr->refCount);
85 dataPtr->lock.unlock();
88 qDebug(
"HttpSession: deleting data");
108 return dataPtr==
nullptr;
115 dataPtr->lock.lockForWrite();
116 dataPtr->values.insert(key,value);
117 dataPtr->lock.unlock();
125 dataPtr->lock.lockForWrite();
126 dataPtr->values.remove(key);
127 dataPtr->lock.unlock();
136 dataPtr->lock.lockForRead();
137 value=dataPtr->values.value(key);
138 dataPtr->lock.unlock();
148 dataPtr->lock.lockForRead();
149 found=dataPtr->values.contains(key);
150 dataPtr->lock.unlock();
157 QMap<QByteArray,QVariant> values;
160 dataPtr->lock.lockForRead();
161 values=dataPtr->values;
162 dataPtr->lock.unlock();
172 dataPtr->lock.lockForRead();
173 value=dataPtr->lastAccess;
174 dataPtr->lock.unlock();
184 dataPtr->lock.lockForWrite();
185 dataPtr->lastAccess=QDateTime::currentMSecsSinceEpoch();
186 dataPtr->lock.unlock();
This class stores data for a single HTTP session.
bool isNull() const
Null sessions cannot store data.
HttpSession(const bool canStore=false)
Constructor.
void setLastAccess()
Set the timestamp of last access, to renew the timeout period.
QByteArray getId() const
Get the unique ID of this session.
void remove(const QByteArray &key)
Remove a value.
bool contains(const QByteArray &key) const
Check if a key exists.
QVariant get(const QByteArray &key) const
Get a value.
void set(const QByteArray &key, const QVariant &value)
Set a value.
HttpSession & operator=(const HttpSession &other)
Copy operator.
qint64 getLastAccess() const
Get the timestamp of last access.
QMap< QByteArray, QVariant > getAll() const
Get a copy of all data stored in this session.
virtual ~HttpSession()
Destructor.