X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fabstractsqlstorage.h;h=bbe4d08140093b0d17910a2c81f8acd2ab3db512;hp=901850916fa422948f0550813a12803bde435a68;hb=b2f681c796855ba0f863eb14b062c5d1a2825df1;hpb=4fef2ef49965b4e89a25e8cdc33100d9717d1aa8 diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index 90185091..bbe4d081 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -63,13 +63,43 @@ protected: inline virtual QString userName() { return QString(); } inline virtual QString password() { return QString(); } +signals: + void syncCachedQueries(); + +private slots: + void connectionDestroyed(); + private: - bool openDb(); + void addConnectionToPool(); int _schemaVersion; - QHash, QSqlQuery *> _queryCache; + int _nextConnectionId; + QMutex _connectionPoolMutex; + class Connection; + QHash _connectionPool; }; +// ======================================== +// AbstractSqlStorage::Connection +// ======================================== +class AbstractSqlStorage::Connection : public QObject { + Q_OBJECT + +public: + Connection(const QString &name, AbstractSqlStorage *storage, QObject *parent = 0); + ~Connection(); + + inline QLatin1String name() const { return QLatin1String(_name); } + QSqlQuery &cachedQuery(const QString &queryName, int version); + +public slots: + void syncCachedQueries(); + +private: + QByteArray _name; + QHash, QSqlQuery *> _queryCache; + AbstractSqlStorage *_storageEngine; +}; #endif