+void SqliteStorage::setCoreState(const QVariantList &data)
+{
+ QByteArray rawData;
+ QDataStream out(&rawData, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_4_2);
+ out << data;
+
+ QSqlDatabase db = logDb();
+ db.transaction();
+ {
+ QSqlQuery query(db);
+ query.prepare(queryString("insert_core_state"));
+ query.bindValue(":key", "active_sessions");
+ query.bindValue(":value", rawData);
+ lockForWrite();
+ safeExec(query);
+
+ if (query.lastError().isValid()) {
+ QSqlQuery updateQuery(db);
+ updateQuery.prepare(queryString("update_core_state"));
+ updateQuery.bindValue(":key", "active_sessions");
+ updateQuery.bindValue(":value", rawData);
+ safeExec(updateQuery);
+ }
+ db.commit();
+ }
+ unlock();
+}
+
+
+QVariantList SqliteStorage::getCoreState(const QVariantList &defaultData)
+{
+ QVariantList data;
+ {
+ QSqlQuery query(logDb());
+ query.prepare(queryString("select_core_state"));
+ query.bindValue(":key", "active_sessions");
+ lockForRead();
+ safeExec(query);
+
+ if (query.first()) {
+ QByteArray rawData = query.value(0).toByteArray();
+ QDataStream in(&rawData, QIODevice::ReadOnly);
+ in.setVersion(QDataStream::Qt_4_2);
+ in >> data;
+ } else {
+ data = defaultData;
+ }
+ }
+ unlock();
+ return data;
+}
+
+