TSession TSessionSqlObjectStore::find(const QByteArray &id, const QDateTime &modified) { TSqlORMapper<TSessionObject> mapper; TCriteria cri; cri.add(TSessionObject::Id, TSql::Equal, id); cri.add(TSessionObject::UpdatedAt, TSql::GreaterEqual, modified); TSessionObject sess = mapper.findFirst(cri); if (sess.isEmpty()) return TSession(); TSession result(id); QDataStream ds(&sess.data, QIODevice::ReadOnly); ds >> *static_cast<QVariantHash *>(&result); return result; }
TSession TSessionRedisStore::find(const QByteArray &id) { TRedis redis; QByteArray data = redis.get('_' + id); if (data.isEmpty()) { return TSession(); } data = qUncompress(QByteArray::fromBase64(data)); QDataStream ds(data); TSession session(id); ds >> *static_cast<QVariantMap *>(&session); if (ds.status() != QDataStream::Ok) { tSystemError("Failed to load a session from the redis store."); } return session; }
TSession TSessionSqlObjectStore::find(const QByteArray &id) { QDateTime modified = QDateTime::currentDateTime().addSecs(-lifeTimeSecs()); TSqlORMapper<TSessionObject> mapper; TCriteria cri; cri.add(TSessionObject::Id, TSql::Equal, id); cri.add(TSessionObject::UpdatedAt, TSql::GreaterEqual, modified); TSessionObject so = mapper.findFirst(cri); if (so.isNull()) { return TSession(); } TSession session(id); QDataStream ds(&so.data, QIODevice::ReadOnly); ds >> *static_cast<QVariantMap *>(&session); if (ds.status() != QDataStream::Ok) { tSystemError("Failed to load a session from the sqlobject store."); } return session; }