External locking for SQLite3DB()

Closes #368
pull/378/head
René Cannaò 11 years ago
parent 95b971a660
commit e6067a953d

@ -138,6 +138,7 @@ class SQLite3DB {
private:
char *url;
sqlite3 *db;
rwlock_t rwlock;
public:
char *get_url() const { return url; }
sqlite3 *get_db() const { return db; }
@ -145,6 +146,12 @@ class SQLite3DB {
SQLite3DB();
~SQLite3DB();
int open(char *, int);
void rdlock();
void rdunlock();
void wrlock();
void wrunlock();
bool execute(const char *);
bool execute_statement(const char *, char **, int *, int *, SQLite3_result **);
int return_one_int(const char *);

@ -7,6 +7,7 @@ SQLite3DB::SQLite3DB() {
db=NULL;
url=NULL;
assert_on_error=0;
spinlock_rwlock_init(&rwlock);
}
SQLite3DB::~SQLite3DB() {
@ -161,3 +162,18 @@ bool SQLite3DB::check_and_build_table(char *table_name, char *table_def) {
return rcb;
}
void SQLite3DB::rdlock() {
spin_wrlock(&rwlock);
}
void SQLite3DB::rdunlock() {
spin_wrunlock(&rwlock);
}
void SQLite3DB::wrlock() {
spin_wrlock(&rwlock);
}
void SQLite3DB::wrunlock() {
spin_wrunlock(&rwlock);
}

Loading…
Cancel
Save