forked from qt-creator/qt-creator
Sqlite: Add busy handler
A busy handler is much more flexible than a timeout. In most cases we can remove the busy exception handling code. Change-Id: I59666ccfbd380a341412e3d25e6716b07097bf3c Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -41,6 +41,8 @@ class Database;
|
||||
class SQLITE_EXPORT DatabaseBackend
|
||||
{
|
||||
public:
|
||||
using BusyHandler = std::function<bool(int count)>;
|
||||
|
||||
DatabaseBackend(Database &database);
|
||||
~DatabaseBackend();
|
||||
|
||||
@@ -90,15 +92,16 @@ public:
|
||||
void (*callback)(void *object, int, char const *database, char const *, long long rowId));
|
||||
void resetUpdateHook();
|
||||
|
||||
void setBusyHandler(BusyHandler &&busyHandler);
|
||||
|
||||
void registerBusyHandler();
|
||||
|
||||
protected:
|
||||
bool databaseIsOpen() const;
|
||||
|
||||
void setPragmaValue(Utils::SmallStringView pragma, Utils::SmallStringView value);
|
||||
Utils::SmallString pragmaValue(Utils::SmallStringView pragma);
|
||||
|
||||
void registerBusyHandler();
|
||||
void registerRankingFunction();
|
||||
static int busyHandlerCallback(void*, int counter);
|
||||
|
||||
void checkForOpenDatabaseWhichCanBeClosed();
|
||||
void checkDatabaseClosing(int resultCode);
|
||||
@@ -126,6 +129,7 @@ protected:
|
||||
private:
|
||||
Database &m_database;
|
||||
sqlite3 *m_databaseHandle;
|
||||
BusyHandler m_busyHandler;
|
||||
};
|
||||
|
||||
} // namespace Sqlite
|
||||
|
||||
Reference in New Issue
Block a user